From: <Saved by Windows Internet Explorer 7>
Subject: Object-relational mapping - Wikipedia, the free encyclopedia
Date: Sun, 4 May 2008 11:44:07 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0099_01C8ADDC.29728300"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/wiki/Object-relational_mapping

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den dir=3Dltr xml:lang=3D"en"=20
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Object-relational =
mapping - Wikipedia, the free encyclopedia</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<META=20
content=3D"Object-relational mapping,.Mac,Apache Cayenne,Apple =
Computer,Array,AutoFetch,Business object (computer =
science),CORBA,Cach=C3=A9 (software),Computer programming,Create, read, =
update and delete"=20
name=3Dkeywords><LINK href=3D"/favicon.ico" rel=3D"shortcut icon"><LINK=20
href=3D"http://en.wikipedia.org/apple-touch-icon.png" =
rel=3Dapple-touch-icon><LINK=20
title=3D"Wikipedia (en)" href=3D"/w/opensearch_desc.php"=20
type=3Dapplication/opensearchdescription+xml rel=3Dsearch><LINK=20
href=3D"http://www.gnu.org/copyleft/fdl.html" rel=3Dcopyright><LINK=20
title=3D"Wikipedia RSS Feed"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DSpecial:RecentChanges=
&amp;feed=3Drss"=20
type=3Dapplication/rss+xml rel=3Dalternate><LINK title=3D"Wikipedia Atom =
Feed"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DSpecial:RecentChanges=
&amp;feed=3Datom"=20
type=3Dapplication/atom+xml rel=3Dalternate>
<STYLE type=3Dtext/css media=3D"screen, projection">@import url( =
/skins-1.5/common/shared.css?141 );
@import url( /skins-1.5/monobook/main.css?141 );
</STYLE>
<LINK media=3Dprint=20
href=3D"http://en.wikipedia.org/skins-1.5/common/commonPrint.css?141"=20
type=3Dtext/css rel=3Dstylesheet><!--[if lt IE 5.5000]><style =
type=3D"text/css">@import =
"/skins-1.5/monobook/IE50Fixes.css?141";</style><![endif]--><!--[if IE =
5.5000]><style type=3D"text/css">@import =
"/skins-1.5/monobook/IE55Fixes.css?141";</style><![endif]--><!--[if IE =
6]><style type=3D"text/css">@import =
"/skins-1.5/monobook/IE60Fixes.css?141";</style><![endif]--><!--[if IE =
7]>
<STYLE type=3Dtext/css>@import url( =
/skins-1.5/monobook/IE70Fixes.css?141 );
</STYLE>
<![endif]--><!--[if lt IE 7]><script type=3D"text/javascript" =
src=3D"/skins-1.5/common/IEFixes.js?141"></script>=0A=
		<meta http-equiv=3D"imagetoolbar" content=3D"no" /><![endif]-->
<SCRIPT type=3Dtext/javascript>/*<![CDATA[*/=0A=
var skin =3D "monobook";=0A=
var stylepath =3D "/skins-1.5";=0A=
var wgArticlePath =3D "/wiki/$1";=0A=
var wgScriptPath =3D "/w";=0A=
var wgScript =3D "/w/index.php";=0A=
var wgVariantArticlePath =3D false;=0A=
var wgActionPaths =3D [];=0A=
var wgServer =3D "http://en.wikipedia.org";=0A=
var wgCanonicalNamespace =3D "";=0A=
var wgCanonicalSpecialPageName =3D false;=0A=
var wgNamespaceNumber =3D 0;=0A=
var wgPageName =3D "Object-relational_mapping";=0A=
var wgTitle =3D "Object-relational mapping";=0A=
var wgAction =3D "view";=0A=
var wgArticleId =3D "59202";=0A=
var wgIsArticle =3D true;=0A=
var wgUserName =3D null;=0A=
var wgUserGroups =3D null;=0A=
var wgUserLanguage =3D "en";=0A=
var wgContentLanguage =3D "en";=0A=
var wgBreakFrames =3D false;=0A=
var wgCurRevisionId =3D "208199280";=0A=
var wgVersion =3D "1.13alpha";=0A=
var wgEnableAPI =3D true;=0A=
var wgEnableWriteAPI =3D false;=0A=
var wgMWSuggestTemplate =3D =
"http://en.wikipedia.org/w/api.php?action=3Dopensearch\x26search=3D{searc=
hTerms}\x26namespace=3D{namespaces}";=0A=
var wgDBname =3D "enwiki";=0A=
var wgSearchNamespaces =3D [0];=0A=
var wgMWSuggestMessages =3D ["with suggestions", "no suggestions"];=0A=
var wgRestrictionEdit =3D [];=0A=
var wgRestrictionMove =3D [];=0A=
/*]]>*/</SCRIPT>

<SCRIPT src=3D"http://en.wikipedia.org/skins-1.5/common/wikibits.js?141" =

type=3Dtext/javascript><!-- wikibits js --></SCRIPT>
<!-- Head Scripts -->
<SCRIPT src=3D"http://en.wikipedia.org/skins-1.5/common/ajax.js?141"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://en.wikipedia.org/skins-1.5/common/mwsuggest.js?141"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://en.wikipedia.org/w/index.php?title=3D-&amp;action=3Draw&amp=
;gen=3Djs&amp;useskin=3Dmonobook"=20
type=3Dtext/javascript><!-- site js --></SCRIPT>

<STYLE type=3Dtext/css>@import url( =
/w/index.php?title=3DMediaWiki:Common.css&usemsgcache=3Dyes&action=3Draw&=
ctype=3Dtext/css&smaxage=3D2678400 );
@import url( =
/w/index.php?title=3DMediaWiki:Monobook.css&usemsgcache=3Dyes&action=3Dra=
w&ctype=3Dtext/css&smaxage=3D2678400 );
@import url( =
/w/index.php?title=3D-&action=3Draw&gen=3Dcss&maxage=3D2678400 );
</STYLE>

<META content=3D"MSHTML 6.00.6000.16640" name=3DGENERATOR></HEAD>
<BODY class=3D"mediawiki ns-0 ltr page-Object-relational_mapping">
<DIV id=3DglobalWrapper>
<DIV id=3Dcolumn-content>
<DIV id=3Dcontent><A id=3Dtop name=3Dtop></A>
<DIV id=3DsiteNotice>
<SCRIPT language=3DJavaScript type=3Dtext/javascript>=0A=
<!--=0A=
document.writeln("\x3cp\x3e\x3c/p\x3e\n");=0A=
-->=0A=
</SCRIPT>
</DIV>
<H1 class=3DfirstHeading>Object-relational mapping</H1>
<DIV id=3DbodyContent>
<H3 id=3DsiteSub>From Wikipedia, the free encyclopedia</H3>
<DIV id=3DcontentSub></DIV>
<DIV id=3Djump-to-nav>Jump to: <A=20
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#column-one=
">navigation</A>,=20
<A=20
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#searchInpu=
t">search</A></DIV><!-- start content -->
<DL>
  <DD><I>For another use of "ORM" see <A class=3Dmw-redirect=20
  title=3D"Object role modelling"=20
  href=3D"http://en.wikipedia.org/wiki/Object_role_modelling">Object =
role=20
  modelling</A>.</I> </DD></DL>
<P><B>Object-relational mapping</B> (aka <B>ORM</B>, <B>O/RM</B>, and =
<B>O/R=20
mapping</B>) is a <A title=3D"Computer programming"=20
href=3D"http://en.wikipedia.org/wiki/Computer_programming">programming</A=
>=20
technique for converting data between incompatible <A title=3D"Type =
system"=20
href=3D"http://en.wikipedia.org/wiki/Type_system">type systems</A> in <A =

title=3D"Relational database"=20
href=3D"http://en.wikipedia.org/wiki/Relational_database">relational =
databases</A>=20
and <A class=3Dmw-redirect title=3DObject-oriented=20
href=3D"http://en.wikipedia.org/wiki/Object-oriented">object-oriented</A>=
=20
programming languages. This creates, in effect, a "virtual <A=20
title=3D"Object database"=20
href=3D"http://en.wikipedia.org/wiki/Object_database">object =
database</A>" which=20
can be used from within the programming language. There are both free =
and=20
commercial packages available that perform object-relational mapping, =
although=20
some programmers opt to create their own ORM tools.</P>
<TABLE class=3Dtoc id=3Dtoc summary=3DContents>
  <TBODY>
  <TR>
    <TD>
      <DIV id=3Dtoctitle>
      <H2>Contents</H2></DIV>
      <UL>
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#Problem_de=
scription"><SPAN=20
        class=3Dtocnumber>1</SPAN> <SPAN class=3Dtoctext>Problem=20
        description</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#Implementa=
tions"><SPAN=20
        class=3Dtocnumber>2</SPAN> <SPAN =
class=3Dtoctext>Implementations</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#Non-SQL_da=
tabases"><SPAN=20
        class=3Dtocnumber>3</SPAN> <SPAN class=3Dtoctext>Non-SQL=20
        databases</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#Criticism"=
><SPAN=20
        class=3Dtocnumber>4</SPAN> <SPAN =
class=3Dtoctext>Criticism</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#See_also">=
<SPAN=20
        class=3Dtocnumber>5</SPAN> <SPAN class=3Dtoctext>See =
also</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#References=
"><SPAN=20
        class=3Dtocnumber>6</SPAN> <SPAN =
class=3Dtoctext>References</SPAN></A>=20
        <LI class=3Dtoclevel-1><A=20
        =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#External_l=
inks"><SPAN=20
        class=3Dtocnumber>7</SPAN> <SPAN class=3Dtoctext>External =
links</SPAN></A>=20
        </LI></UL></TD></TR></TBODY></TABLE>
<SCRIPT type=3Dtext/javascript>=0A=
//<![CDATA[=0A=
 if (window.showTocToggle) { var tocShowText =3D "show"; var tocHideText =
=3D "hide"; showTocToggle(); } =0A=
//]]>=0A=
</SCRIPT>

<P><A id=3DProblem_description name=3DProblem_description></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: Problem =
description"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D1">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>Problem description</SPAN></H2>
<P><B>Data management</B> tasks in object-oriented (OO) programming are=20
typically implemented by manipulating <A title=3D"Object (computer =
science)"=20
href=3D"http://en.wikipedia.org/wiki/Object_%28computer_science%29">objec=
ts</A>,=20
which are almost always non-scalar values. For example, consider an =
address book=20
entry which represents a single person along with zero or more phone =
numbers and=20
zero or more addresses. This could be modeled in an object-oriented=20
implementation by a "person <A class=3Dmw-redirect title=3D"Object =
(computing)"=20
href=3D"http://en.wikipedia.org/wiki/Object_%28computing%29">object</A>" =
with=20
"slots" to hold the data that comprise the entry: the person's name, a =
list (or=20
<A title=3DArray href=3D"http://en.wikipedia.org/wiki/Array">array</A>) =
of phone=20
numbers, and a list of addresses. The list of phone numbers would itself =
contain=20
"phone number objects" and so on. The address book entry is treated as a =
single=20
value by the programming language (it can be referenced by a single =
variable,=20
for instance). Various methods can be associated with the object, such =
as a=20
method to return the preferred phone number, the home address, and so =
on.</P>
<P>However, many popular database products such as <A title=3DSQL=20
href=3D"http://en.wikipedia.org/wiki/SQL">SQL</A> <A class=3Dmw-redirect =
title=3DDBMS=20
href=3D"http://en.wikipedia.org/wiki/DBMS">DBMS</A> can only store and =
manipulate=20
<A title=3D"Scalar (computing)"=20
href=3D"http://en.wikipedia.org/wiki/Scalar_%28computing%29">scalar</A> =
values=20
such as integers and strings organized within <A title=3D"Table =
(database)"=20
href=3D"http://en.wikipedia.org/wiki/Table_%28database%29">tables</A>.</P=
>
<P>The programmer must either convert the object values into groups of =
simpler=20
values for storage in the database (and convert them back upon =
retrieval), or=20
only use simple scalar values within the program. Object-relational =
mapping is=20
used to implement the first approach.</P>
<P>The crux of the problem is translating those objects to forms which =
can be=20
stored in the database, and which can later be retrieved easily, while=20
preserving the properties of the objects and their relationships; these =
objects=20
are then said to be <A title=3D"Persistence (computer science)"=20
href=3D"http://en.wikipedia.org/wiki/Persistence_%28computer_science%29">=
persistent</A>.</P>
<P><A id=3DImplementations name=3DImplementations></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: =
Implementations"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D2">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>Implementations</SPAN></H2>
<P>The most common type of database used is the relational database, =
which=20
predates the rise of object-oriented programming in the 1990s. =
Relational=20
databases use a series of <I><A title=3D"Table (database)"=20
href=3D"http://en.wikipedia.org/wiki/Table_%28database%29">tables</A></I>=
 to=20
organize data. Data in different tables are associated through the use =
of=20
declarative constraints, rather than explicit pointers or links. The =
same data=20
that can be stored in a single object value would likely need to be =
stored=20
across several of these tables.</P>
<P>An object-relational mapping implementation would need to =
systematically and=20
predictably choose which tables to use and generate the necessary SQL. =
In=20
overview, the <A class=3Dmw-redirect title=3D"Object-Relational =
impedance mismatch"=20
href=3D"http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch=
">Object-Relational=20
impedance mismatch</A> between the architectural approach of the object =
oriented=20
application, such as one built in Java, and an approach in which the =
data is=20
stored in a relational database management system (<A =
class=3Dmw-redirect=20
title=3DRDBMS href=3D"http://en.wikipedia.org/wiki/RDBMS">RDBMS</A>), =
such as Oracle=20
or IBM's DB2, creates a rather complex<SUP class=3D"noprint =
Inline-Template"><SPAN=20
title=3D"The material in the vicinity of this tag may use weasel words =
or too-vague attribution.&nbsp;since December 2007"=20
style=3D"WHITE-SPACE: nowrap">[<I><A title=3D"Wikipedia:Avoid weasel =
words"=20
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Avoid_weasel_words">who?</=
A></I>]</SPAN></SUP>=20
set of challenges to deal with. Some tasks include:</P>
<UL>
  <LI>performance,=20
  <LI>linear scalability,=20
  <LI>manageability of the <A title=3D"Create, read, update and delete"=20
  =
href=3D"http://en.wikipedia.org/wiki/Create%2C_read%2C_update_and_delete"=
>CRUD</A>=20
  operations for even the most complex relationships without slowing =
down,=20
  <LI>eliminate coding SQL - JDBC - Java to save time and create =
consistency in=20
  how this is handled,=20
  <LI>make maintenance and future application changes simple, requiring =
little=20
  or no effort,=20
  <LI>etc. </LI></UL>
<P>The real values in using an ORM tool are to save time, simplify =
development=20
(i.e. the ORM tool handles the complexity for the developer), increase=20
performance or scalability, and minimize architectural challenges =
related to=20
inability of the ORM tool or developer's experience.</P>
<P>Many packages have been developed to reduce the tedium of developing=20
object-relational mapping systems by providing libraries of classes =
which are=20
able to perform mappings automatically. Given a list of tables in the =
database,=20
and objects in the program, they will automatically map requests from =
one to the=20
other. Asking a person object for its phone numbers will result in the =
proper=20
query being created and sent, and the results being translated directly =
into=20
phone number objects inside the program. <SUP class=3Dreference =
id=3Dcite_ref-0><A=20
title=3D""=20
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#cite_note-=
0">[1]</A></SUP></P>
<P>From a programmer's perspective, the system should look like a =
persistent=20
object store. One can create objects and work with them as one would =
normally,=20
and they automatically end up in the database.</P>
<P>In practice, however, things are never quite that simple. All ORM =
systems=20
tend to make themselves visible in various ways, reducing to some degree =
one's=20
ability to ignore the database. Worse, the translation layer can be slow =
and=20
inefficient (notably in terms of the <A title=3DSQL=20
href=3D"http://en.wikipedia.org/wiki/SQL">SQL</A> it writes), resulting =
in=20
programs that are slower and use more memory than code written "by =
hand."</P>
<P>A number of ORM systems have been created over the years, but their =
effect on=20
the market seems mixed. <A title=3DNeXT=20
href=3D"http://en.wikipedia.org/wiki/NeXT">NeXT</A>'s <A=20
title=3D"Enterprise Objects Framework"=20
href=3D"http://en.wikipedia.org/wiki/Enterprise_Objects_Framework">Enterp=
rise=20
Objects Framework</A> (EOF) was once considered one of the best such =
systems,=20
but it never achieved broad marketshare, chiefly because it was tightly =
tied to=20
NeXT's entire toolkit, <A title=3DOpenStep=20
href=3D"http://en.wikipedia.org/wiki/OpenStep">OpenStep</A>. It was =
later=20
integrated into <A title=3DNeXT=20
href=3D"http://en.wikipedia.org/wiki/NeXT">NeXT</A>'s <A =
title=3DWebObjects=20
href=3D"http://en.wikipedia.org/wiki/WebObjects">WebObjects</A>, the =
first=20
object-oriented Web Application Server. Since <A class=3Dmw-redirect=20
title=3D"Apple Computer" =
href=3D"http://en.wikipedia.org/wiki/Apple_Computer">Apple=20
Computer</A> bought <A title=3DNeXT=20
href=3D"http://en.wikipedia.org/wiki/NeXT">NeXT</A> in 1997, EOF =
provides the=20
technology behind the company's e-commerce Web site, the <A title=3D.Mac =

href=3D"http://en.wikipedia.org/wiki/.Mac">.Mac</A> services and the <A=20
class=3Dmw-redirect title=3D"ITunes Music Store"=20
href=3D"http://en.wikipedia.org/wiki/ITunes_Music_Store">iTunes Music =
Store</A>.=20
Apple provides EOF in two implementations: the Objective-C =
implementation that=20
comes with the Apple Developers Tools and the Pure Java implementation =
that=20
comes in <A title=3DWebObjects=20
href=3D"http://en.wikipedia.org/wiki/WebObjects">WebObjects</A> 5.X.</P>
<P><A title=3D"Enterprise Objects Framework"=20
href=3D"http://en.wikipedia.org/wiki/Enterprise_Objects_Framework">Enterp=
rise=20
Objects Framework</A> has influenced and inspired many subsequent ORM =
efforts,=20
including open source <A title=3D"Apache Cayenne"=20
href=3D"http://en.wikipedia.org/wiki/Apache_Cayenne">Apache Cayenne</A>. =
Cayenne=20
has similar goals to EOF and aims to meet the <A class=3D"external text" =

title=3Dhttp://jcp.org/en/jsr/detail?id=3D220=20
href=3D"http://jcp.org/en/jsr/detail?id=3D220" rel=3Dnofollow>JPA =
standard</A>.</P>
<P>An alternative approach is being taken with technologies such as <A=20
title=3D"Resource Description Framework"=20
href=3D"http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF<=
/A> and=20
<A title=3DSPARQL =
href=3D"http://en.wikipedia.org/wiki/SPARQL">SPARQL</A>, and the=20
concept of the "<A title=3DTriplestore=20
href=3D"http://en.wikipedia.org/wiki/Triplestore">triplestore</A>". RDF =
is a=20
serialization of the subject-predicate-object concept, <A =
title=3DRDF/XML=20
href=3D"http://en.wikipedia.org/wiki/RDF/XML">RDF/XML</A> is an XML =
representation=20
of it, <A title=3DSPARQL =
href=3D"http://en.wikipedia.org/wiki/SPARQL">SPARQL</A> is=20
an SQL-like query language, and a <A title=3DTriplestore=20
href=3D"http://en.wikipedia.org/wiki/Triplestore">triplestore</A> is a =
general=20
description of any database that deals with a triple.</P>
<P>More recently, a similar system has started to evolve in the Java =
world,=20
known as <A title=3D"Java Data Objects"=20
href=3D"http://en.wikipedia.org/wiki/Java_Data_Objects">Java Data =
Objects</A>=20
(JDO). Unlike EOF, JDO is a standard, and several implementations are =
available=20
from different vendors. The <A class=3Dmw-redirect title=3D"Enterprise =
Java Beans"=20
href=3D"http://en.wikipedia.org/wiki/Enterprise_Java_Beans">Enterprise =
Java=20
Beans</A> 3.0 (EJB3) specification also covers this same area. There has =
been=20
standards conflict between the two standards bodies in terms of =
pre-eminence.=20
JDO has several commercial implementations, while EJB 3.0 is still under =

development. However, most recently another new standard has been =
announced by=20
JCP to bring these two standards together and make the future standard =
something=20
that works with various Java architectures.</P>
<P>Another example to mention is <A title=3D"Hibernate (Java)"=20
href=3D"http://en.wikipedia.org/wiki/Hibernate_%28Java%29">Hibernate</A>,=
 the most=20
used framework of O/R mapping in the Java world that has inspired the =
EJB3=20
specification.<SUP class=3D"noprint Inline-Template"><SPAN=20
title=3D"The material in the vicinity of this tag needs to be =
fact-checked with the cited source(s)&nbsp;since July 2007"=20
style=3D"WHITE-SPACE: nowrap">[<I><A title=3DWikipedia:Verifiability=20
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Verifiability">verificatio=
n=20
needed</A></I>]</SPAN></SUP>. <A title=3DNHibernate=20
href=3D"http://en.wikipedia.org/wiki/NHibernate">NHibernate</A> is a =
free,=20
open-source port of Hibernate to the Microsoft .NET platform.</P>
<P><A title=3D"Service Data Objects"=20
href=3D"http://en.wikipedia.org/wiki/Service_Data_Objects">Service Data=20
Objects</A> is another standard driven by the need of delivering =
updatable=20
datagraphs to business level components written in any programming =
language.=20
Then the O/R mapping is done at the data access layer level, possibly =
driven by=20
an enterprise <A title=3DMetadata=20
href=3D"http://en.wikipedia.org/wiki/Metadata">Metadata</A> repository, =
and=20
reusable by every client application.</P>
<P><A id=3DNon-SQL_databases name=3DNon-SQL_databases></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: Non-SQL =
databases"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D3">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>Non-SQL databases</SPAN></H2>
<P>Another solution would be to use an <A title=3D"Object database"=20
href=3D"http://en.wikipedia.org/wiki/Object_database">object-oriented =
database=20
management system</A>, which, as the name implies, is a database =
designed=20
specifically for working with object-oriented values. Using an OODBMS =
would=20
eliminate the need for converting data to and from its SQL form, as the =
data=20
would be stored in its original object representation.</P>
<P>Databases such as <A title=3D"Cach=C3=A9 (software)"=20
href=3D"http://en.wikipedia.org/wiki/Cach%C3%A9_%28software%29">Cach=C3=A9=
</A> do not=20
require manual ORM. SQL access to non-scalar values is already built in. =
<A=20
title=3D"Cach=C3=A9 (software)"=20
href=3D"http://en.wikipedia.org/wiki/Cach%C3%A9_%28software%29">Cach=C3=A9=
</A> allows=20
the developer to design any combination of OO and table structured =
storage=20
within the database instead of resorting to external tool sets.</P>
<P>Object-oriented databases have yet to come into widespread use. One =
of their=20
main limitations is that switching from an SQL DBMS to a purely =
object-oriented=20
DBMS means you lose the capability to create <A title=3DSQL=20
href=3D"http://en.wikipedia.org/wiki/SQL">SQL</A> queries, a tried and =
tested=20
method for retrieving ad-hoc combinations of data. For this reason, many =

programmers find themselves more at home with an object-SQL mapping =
system, even=20
though most commercial object-oriented databases are able to process SQL =
queries=20
to a limited extent. <A title=3D"Cach=C3=A9 (software)"=20
href=3D"http://en.wikipedia.org/wiki/Cach%C3%A9_%28software%29">Cach=C3=A9=
</A> has a=20
built-in SQL parser so that interrogations on the object may be done in =
a=20
straightforward SQL manner.</P>
<P>Other post-relational databases such as <A class=3Dnew=20
title=3D"Matisse (software) (page does not exist)"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DMatisse_%28software%2=
9&amp;action=3Dedit&amp;redlink=3D1">Matisse</A>=20
also utilise a SQL engine to interpret the object store.</P>
<P><A id=3DCriticism name=3DCriticism></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: Criticism"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D4">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>Criticism</SPAN></H2>
<P>Some have proposed that the promotion of Object-Relational Mapping =
tools is=20
symptomatic of an intent to solve <I>the wrong side</I> of the <A=20
class=3Dmw-redirect title=3D"Object-Relational impedance mismatch"=20
href=3D"http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch=
">Object-Relational=20
impedance mismatch</A> issue. The information principle underpinning <A=20
title=3D"Relational database"=20
href=3D"http://en.wikipedia.org/wiki/Relational_database">relational =
databases</A>=20
implies that object orientation itself is inadequate for the full needs =
of data=20
manipulation, and it is that '<A title=3DParadigm=20
href=3D"http://en.wikipedia.org/wiki/Paradigm">paradigm</A>' as a whole =
that=20
should be addressed. If this were the case, ORM would be left redundant. =
In this=20
view, the "impedance mismatch" and the supposed need for =
object-relational=20
mapping arises from the mistaken equation of object and relation (table =
or view=20
in SQL speak). The correct mapping in the relational model is between =
object and=20
type. Also, ORM systems tend to perform worse than writing SQL directly =
for more=20
complex tasks. However, most ORM systems allow writing raw SQL to some=20
degree.</P>
<P>Because of the complexity associated with high performance physical =
data=20
models, it is often impossible to build any usable interface to a =
relational=20
database which is easily navigable by a naive user. This is simply a =
consequence=20
of having a high quality, normalized relational database. When =
interfacing with=20
database, multiple tables must therefore be "merged" in the users view, =
or=20
alternatively, information must be abstracted into data formats such as =
XML=20
which utilize data structures which are more easily managed by object =
oriented=20
methodologies.</P>
<P>These needs are almost ubiquitous in the enterprise environment, even =
when=20
ORM tools are not being used. This suggests the fact that many, if not =
all, data=20
driven systems with high level interfaces which are not "ORM" in name =
must=20
implement ORM on some level (especially since many enterprise systems =
are built=20
on object oriented frameworks such as Java). For example&nbsp;: a join =
operation=20
on two related tables may be considered a type of object relational =
mapping=20
since it merges lower level data tuples into a more easily navigable, =
higher=20
order structure. Thus, a join is a way of hardcoding object relational =
logic=20
into SQL.</P>
<P>ORM tools have been criticized for their tendency to eclipse the work =
done by=20
Database Administrators for optimization and performance. This issue has =
been=20
solved by most tools by redundantly allowing hardcoded SQL, stored =
procedure=20
calling, and by implementing dirty solutions for data acquisition and =
insertion,=20
such as transaction management. In addition, the convenience involved =
with=20
caching custom selected data sets in memory using ORM methodologies =
makes the=20
implementation of dirty solutions at the database level unnecessary in =
many=20
environments.</P>
<P>In this context, an ORM tool is simply any tool which joins =
relational data=20
in the context of a <A title=3D"Business object (computer science)"=20
href=3D"http://en.wikipedia.org/wiki/Business_object_%28computer_science%=
29">Business=20
object (computer science)</A> required for some real world =
application.</P>
<P><A id=3DSee_also name=3DSee_also></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: See also"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D5">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>See also</SPAN></H2>
<UL>
  <LI><A title=3D"List of object-relational mapping software"=20
  =
href=3D"http://en.wikipedia.org/wiki/List_of_object-relational_mapping_so=
ftware">List=20
  of object-relational mapping software</A>=20
  <LI><A title=3DAutoFetch=20
  href=3D"http://en.wikipedia.org/wiki/AutoFetch">AutoFetch</A> - =
automatic query=20
  tuning=20
  <LI><A class=3Dmw-redirect title=3DCORBA=20
  href=3D"http://en.wikipedia.org/wiki/CORBA">CORBA</A>=20
  <LI><A title=3DDatabase=20
  href=3D"http://en.wikipedia.org/wiki/Database">Database</A>=20
  <LI><A title=3D"Object database"=20
  href=3D"http://en.wikipedia.org/wiki/Object_database">Object =
database</A>=20
  <LI><A title=3D"Object Prevalence"=20
  href=3D"http://en.wikipedia.org/wiki/Object_Prevalence">Object =
Prevalence</A>=20
  <LI><A title=3D"Object-relational database"=20
  =
href=3D"http://en.wikipedia.org/wiki/Object-relational_database">Object-r=
elational=20
  database</A>=20
  <LI><A class=3Dmw-redirect title=3D"Object-Relational impedance =
mismatch"=20
  =
href=3D"http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch=
">Object-Relational=20
  impedance mismatch</A>=20
  <LI><A title=3D"Relational model"=20
  href=3D"http://en.wikipedia.org/wiki/Relational_model">Relational =
model</A>=20
  <LI><A title=3DSQL href=3D"http://en.wikipedia.org/wiki/SQL">SQL</A>=20
  <LI><A title=3D"Service Data Objects"=20
  href=3D"http://en.wikipedia.org/wiki/Service_Data_Objects">Service =
Data=20
  Objects</A>=20
  <LI><A title=3DTopLink =
href=3D"http://en.wikipedia.org/wiki/TopLink">TopLink</A>=20
  </LI></UL>
<P><A id=3DReferences name=3DReferences></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: References"=20
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D6">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>References</SPAN></H2>
<OL class=3Dreferences>
  <LI id=3Dcite_note-0><B><A title=3D""=20
  =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping#cite_ref-0=
">^</A></B>=20
  <A class=3D"external text"=20
  =
title=3Dhttp://www.service-architecture.com/object-relational-mapping/art=
icles/transparent_persistence.html=20
  =
href=3D"http://www.service-architecture.com/object-relational-mapping/art=
icles/transparent_persistence.html"=20
  rel=3Dnofollow>Animation showing how an object-relational mapping =
utility=20
  works</A> </LI></OL>
<P><A id=3DExternal_links name=3DExternal_links></A></P>
<H2><SPAN class=3Deditsection>[<A title=3D"Edit section: External links" =

href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit&amp;section=3D7">edit</A>]</SPAN>=20
<SPAN class=3Dmw-headline>External links</SPAN></H2>
<UL>
  <LI><A class=3D"external text" =
title=3Dhttp://www.artima.com/intv/abstract3.html=20
  href=3D"http://www.artima.com/intv/abstract3.html" =
rel=3Dnofollow>Anders Hejlsberg=20
  about ORM</A>=20
  <LI><A class=3D"external text"=20
  title=3Dhttp://www.agiledata.org/essays/mappingObjects.html=20
  href=3D"http://www.agiledata.org/essays/mappingObjects.html" =
rel=3Dnofollow>Scott=20
  W. Ambler: Mapping Objects to Relational Databases: O/R Mapping In =
Detail</A>=20
  <LI><A class=3D"external text"=20
  title=3Dhttp://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet=20
  href=3D"http://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet"=20
  rel=3Dnofollow>Object Relational Tool Comparison in .NET</A> - =
outdated=20
  <LI><A class=3D"external text"=20
  =
title=3Dhttp://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAcce=
ssObject.html=20
  =
href=3D"http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAcce=
ssObject.html"=20
  rel=3Dnofollow>Core J2EE Design Pattern: Data Access Objects</A>=20
  <LI><A class=3D"external text"=20
  title=3Dhttp://madgeek.com/Articles/ORMapping/EN/mapping.htm=20
  href=3D"http://madgeek.com/Articles/ORMapping/EN/mapping.htm"=20
  rel=3Dnofollow>Choosing an Object-Relational mapping tool</A> =
</LI></UL><!-- =0A=
NewPP limit report=0A=
Preprocessor node count: 123/1000000=0A=
Post-expand include size: 2267/2048000 bytes=0A=
Template argument size: 538/2048000 bytes=0A=
Expensive parser function count: 0/500=0A=
--><!-- Saved in parser cache with key =
enwiki:pcache:idhash:59202-0!1!0!default!!en!2 and timestamp =
20080429165153 -->
<DIV class=3Dprintfooter>Retrieved from "<A=20
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping">http://en=
.wikipedia.org/wiki/Object-relational_mapping</A>"</DIV>
<DIV class=3Dcatlinks id=3Dcatlinks>
<DIV id=3Dmw-normal-catlinks><A title=3D"Portal:Contents/Categorical =
index"=20
href=3D"http://en.wikipedia.org/wiki/Portal:Contents/Categorical_index">C=
ategories</A>:=20
<SPAN dir=3Dltr><A title=3DCategory:Databases=20
href=3D"http://en.wikipedia.org/wiki/Category:Databases">Databases</A></S=
PAN> |=20
<SPAN dir=3Dltr><A title=3D"Category:Database management systems"=20
href=3D"http://en.wikipedia.org/wiki/Category:Database_management_systems=
">Database=20
management systems</A></SPAN></DIV>
<DIV class=3Dmw-hidden-cats-hidden id=3Dmw-hidden-catlinks>Hidden =
categories: <SPAN=20
dir=3Dltr><A=20
title=3D"Category:Articles with specifically-marked weasel-worded =
phrases"=20
href=3D"http://en.wikipedia.org/wiki/Category:Articles_with_specifically-=
marked_weasel-worded_phrases">Articles=20
with specifically-marked weasel-worded phrases</A></SPAN> | <SPAN =
dir=3Dltr><A=20
title=3D"Category:All pages needing cleanup"=20
href=3D"http://en.wikipedia.org/wiki/Category:All_pages_needing_cleanup">=
All pages=20
needing cleanup</A></SPAN> | <SPAN dir=3Dltr><A=20
title=3D"Category:Wikipedia articles needing factual verification since =
July 2007"=20
href=3D"http://en.wikipedia.org/wiki/Category:Wikipedia_articles_needing_=
factual_verification_since_July_2007">Wikipedia=20
articles needing factual verification since July =
2007</A></SPAN></DIV></DIV><!-- end content -->
<DIV class=3DvisualClear></DIV></DIV></DIV></DIV>
<DIV id=3Dcolumn-one>
<DIV class=3Dportlet id=3Dp-cactions>
<H5>Views</H5>
<DIV class=3DpBody>
<UL>
  <LI class=3Dselected id=3Dca-nstab-main><A title=3D"View the content =
page [c]"=20
  accessKey=3Dc=20
  =
href=3D"http://en.wikipedia.org/wiki/Object-relational_mapping">Article</=
A>=20
  <LI id=3Dca-talk><A title=3D"Discussion about the content page [t]" =
accessKey=3Dt=20
  =
href=3D"http://en.wikipedia.org/wiki/Talk:Object-relational_mapping">Disc=
ussion</A>=20

  <LI id=3Dca-edit><A=20
  title=3D"You can edit this page. Please use the preview button before =
saving. [e]"=20
  accessKey=3De=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dedit">Edit=20
  this page</A>=20
  <LI id=3Dca-history><A title=3D"Past versions of this page [h]" =
accessKey=3Dh=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;action=3Dhistory">History</A>=20
  </LI></UL></DIV></DIV>
<DIV class=3Dportlet id=3Dp-personal>
<H5>Personal tools</H5>
<DIV class=3DpBody>
<UL>
  <LI id=3Dpt-login><A=20
  title=3D"You are encouraged to log in; however, it is not mandatory. =
[o]"=20
  accessKey=3Do=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DSpecial:UserLogin&amp=
;returnto=3DObject-relational_mapping">Log=20
  in / create account</A> </LI></UL></DIV></DIV>
<DIV class=3Dportlet id=3Dp-logo><A title=3D"Visit the main page [z]"=20
style=3D"BACKGROUND-IMAGE: url(/images/wiki-en.png)" accessKey=3Dz=20
href=3D"http://en.wikipedia.org/wiki/Main_Page"></A></DIV>
<SCRIPT type=3Dtext/javascript> if (window.isMSIE55) fixalpha(); =
</SCRIPT>

<DIV class=3D"generated-sidebar portlet" id=3Dp-navigation>
<H5>Navigation</H5>
<DIV class=3DpBody>
<UL>
  <LI id=3Dn-mainpage><A title=3D"Visit the main page [z]" accessKey=3Dz =

  href=3D"http://en.wikipedia.org/wiki/Main_Page">Main Page</A>=20
  <LI id=3Dn-Contents><A title=3D"Guides to browsing Wikipedia"=20
  href=3D"http://en.wikipedia.org/wiki/Portal:Contents">Contents</A>=20
  <LI id=3Dn-featuredcontent><A=20
  href=3D"http://en.wikipedia.org/wiki/Portal:Featured_content">Featured =

  content</A>=20
  <LI id=3Dn-currentevents><A=20
  title=3D"Find background information on current events"=20
  href=3D"http://en.wikipedia.org/wiki/Portal:Current_events">Current =
events</A>=20
  <LI id=3Dn-randompage><A title=3D"Load a random article [x]" =
accessKey=3Dx=20
  href=3D"http://en.wikipedia.org/wiki/Special:Random">Random =
article</A>=20
</LI></UL></DIV></DIV>
<DIV class=3D"generated-sidebar portlet" id=3Dp-interaction>
<H5>Interaction</H5>
<DIV class=3DpBody>
<UL>
  <LI id=3Dn-aboutsite><A=20
  href=3D"http://en.wikipedia.org/wiki/Wikipedia:About">About =
Wikipedia</A>=20
  <LI id=3Dn-portal><A=20
  title=3D"About the project, what you can do, where to find things"=20
  =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Community_Portal">Communit=
y=20
  portal</A>=20
  <LI id=3Dn-recentchanges><A title=3D"The list of recent changes in the =
wiki [r]"=20
  accessKey=3Dr =
href=3D"http://en.wikipedia.org/wiki/Special:RecentChanges">Recent=20
  changes</A>=20
  <LI id=3Dn-contact><A title=3D"How to contact Wikipedia"=20
  href=3D"http://en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact =
Wikipedia</A>=20

  <LI id=3Dn-sitesupport><A title=3D"Support us"=20
  href=3D"http://wikimediafoundation.org/wiki/Donate">Donate to =
Wikipedia</A>=20
  <LI id=3Dn-help><A title=3D"Guidance on how to use and edit Wikipedia" =

  href=3D"http://en.wikipedia.org/wiki/Help:Contents">Help</A>=20
</LI></UL></DIV></DIV>
<DIV class=3Dportlet id=3Dp-search>
<H5><LABEL for=3DsearchInput>Search</LABEL></H5>
<DIV class=3DpBody id=3DsearchBody>
<FORM id=3Dsearchform action=3D/wiki/Special:Search>
<DIV><INPUT id=3DsearchInput title=3D"Search Wikipedia [f]" =
accessKey=3Df name=3Dsearch>=20
<INPUT class=3DsearchButton id=3DsearchGoButton title=3D"Go to a page =
with this exact name if one exists" type=3Dsubmit value=3DGo =
name=3Dgo>&nbsp;=20
<INPUT class=3DsearchButton id=3Dmw-searchButton title=3D"Search the =
wiki for this text" type=3Dsubmit value=3DSearch name=3Dfulltext>=20
</DIV></FORM></DIV></DIV>
<DIV class=3Dportlet id=3Dp-tb>
<H5>Toolbox</H5>
<DIV class=3DpBody>
<UL>
  <LI id=3Dt-whatlinkshere><A=20
  title=3D"List of all English Wikipedia pages that link here [j]" =
accessKey=3Dj=20
  =
href=3D"http://en.wikipedia.org/wiki/Special:WhatLinksHere/Object-relatio=
nal_mapping">What=20
  links here</A>=20
  <LI id=3Dt-recentchangeslinked><A=20
  title=3D"Recent changes in pages linked from this page [k]" =
accessKey=3Dk=20
  =
href=3D"http://en.wikipedia.org/wiki/Special:RecentChangesLinked/Object-r=
elational_mapping">Related=20
  changes</A>=20
  <LI id=3Dt-upload><A title=3D"Upload files [u]" accessKey=3Du=20
  href=3D"http://en.wikipedia.org/wiki/Wikipedia:Upload">Upload file</A> =

  <LI id=3Dt-specialpages><A title=3D"List of all special pages [q]" =
accessKey=3Dq=20
  href=3D"http://en.wikipedia.org/wiki/Special:SpecialPages">Special =
pages</A>=20
  <LI id=3Dt-print><A title=3D"Printable version of this page [p]" =
accessKey=3Dp=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;printable=3Dyes">Printable=20
  version</A>=20
  <LI id=3Dt-permalink><A title=3D"Permanent link to this version of the =
page"=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DObject-relational_map=
ping&amp;oldid=3D208199280">Permanent=20
  link</A>
  <LI id=3Dt-cite><A=20
  =
href=3D"http://en.wikipedia.org/w/index.php?title=3DSpecial:Cite&amp;page=
=3DObject-relational_mapping&amp;id=3D208199280">Cite=20
  this page</A> </LI></UL></DIV></DIV>
<DIV class=3Dportlet id=3Dp-lang>
<H5>Languages</H5>
<DIV class=3DpBody>
<UL>
  <LI class=3Dinterwiki-ca><A =
href=3D"http://ca.wikipedia.org/wiki/ORM">Catal=C3=A0</A>=20
  <LI class=3Dinterwiki-de><A=20
  =
href=3D"http://de.wikipedia.org/wiki/Objektrelationale_Abbildung">Deutsch=
</A>=20
  <LI class=3Dinterwiki-es><A=20
  =
href=3D"http://es.wikipedia.org/wiki/Mapeo_objeto-relacional">Espa=C3=B1o=
l</A>=20
  <LI class=3Dinterwiki-fr><A=20
  =
href=3D"http://fr.wikipedia.org/wiki/Object-relational_mapping">Fran=C3=A7=
ais</A>=20
  <LI class=3Dinterwiki-id><A=20
  href=3D"http://id.wikipedia.org/wiki/Pemetaan_objek-relasional">Bahasa =

  Indonesia</A>=20
  <LI class=3Dinterwiki-ja><A=20
  =
href=3D"http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7=
%E3%82%AF%E3%83%88%E9%96%A2%E4%BF%82%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%=
E3%82%B0">=E6=97=A5=E6=9C=AC=E8=AA=9E</A>=20

  <LI class=3Dinterwiki-pl><A=20
  =
href=3D"http://pl.wikipedia.org/wiki/Mapowanie_obiektowo-relacyjne">Polsk=
i</A>=20
  <LI class=3Dinterwiki-pt><A=20
  =
href=3D"http://pt.wikipedia.org/wiki/Mapeamento_objeto-relacional">Portug=
u=C3=AAs</A>=20

  <LI class=3Dinterwiki-ru><A =
href=3D"http://ru.wikipedia.org/wiki/ORM">=D0=A0=D1=83=D1=81=D1=81=D0=BA=D0=
=B8=D0=B9</A>=20
  <LI class=3Dinterwiki-th><A=20
  =
href=3D"http://th.wikipedia.org/wiki/%E0%B8%95%E0%B8%B1%E0%B8%A7%E0%B8%AA=
%E0%B9%88%E0%B8%87%E0%B8%A3%E0%B8%B0%E0%B8%AB%E0%B8%A7%E0%B9%88%E0%B8%B2%=
E0%B8%87%E0%B9%82%E0%B8%A1%E0%B9%80%E0%B8%94%E0%B8%A5%E0%B9%80%E0%B8%8A%E=
0%B8%B4%E0%B8%87%E0%B8%A7%E0%B8%B1%E0%B8%95%E0%B8%96%E0%B8%B8%E0%B9%81%E0=
%B8%A5%E0%B8%B0%E0%B9%80%E0%B8%8A%E0%B8%B4%E0%B8%87%E0%B8%AA%E0%B8%B1%E0%=
B8%A1%E0%B8%9E%E0%B8%B1%E0%B8%99%E0%B8%98%E0%B9%8C">=E0=B9=84=E0=B8=97=E0=
=B8=A2</A>=20

  <LI class=3Dinterwiki-zh><A=20
  =
href=3D"http://zh.wikipedia.org/wiki/%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB=
%E6%98%A0%E5%B0%84">=E4=B8=AD=E6=96=87</A>=20
  </LI></UL></DIV></DIV></DIV><!-- end of the left (by default at least) =
column -->
<DIV class=3DvisualClear></DIV>
<DIV id=3Dfooter>
<DIV id=3Df-poweredbyico><A href=3D"http://www.mediawiki.org/"><IMG=20
alt=3D"Powered by MediaWiki"=20
src=3D"http://en.wikipedia.org/skins-1.5/common/images/poweredby_mediawik=
i_88x31.png"></A></DIV>
<DIV id=3Df-copyrightico><A =
href=3D"http://wikimediafoundation.org/"><IMG=20
alt=3D"Wikimedia Foundation"=20
src=3D"http://en.wikipedia.org/images/wikimedia-button.png" =
border=3D0></A></DIV>
<UL id=3Df-list>
  <LI id=3Dlastmod>This page was last modified on 25 April 2008, at =
21:31.=20
  <LI id=3Dcopyright>All text is available under the terms of the <A=20
  class=3Dinternal title=3D"Wikipedia:Text of the GNU Free Documentation =
License"=20
  =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Docum=
entation_License">GNU=20
  Free Documentation License</A>. (See <B><A class=3Dinternal=20
  title=3DWikipedia:Copyrights=20
  =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Copyrights">Copyrights</A>=
</B>=20
  for details.) <BR>Wikipedia=C2=AE is a registered trademark of the <A=20
  href=3D"http://www.wikimediafoundation.org/">Wikimedia Foundation, =
Inc</A>., a=20
  U.S. registered <A class=3Dinternal title=3D501(c)(3)=20
  =
href=3D"http://en.wikipedia.org/wiki/501%28c%29#501.28c.29.283.29">501(c)=
(3)</A>=20
  <A=20
  =
href=3D"http://wikimediafoundation.org/wiki/Deductibility_of_donations">t=
ax-deductible</A>=20
  <A class=3Dinternal title=3D"Non-profit organization"=20
  =
href=3D"http://en.wikipedia.org/wiki/Non-profit_organization">nonprofit</=
A> <A=20
  title=3D"Charitable organization"=20
  =
href=3D"http://en.wikipedia.org/wiki/Charitable_organization">charity</A>=
.<BR>
  <LI id=3Dprivacy><A title=3D"wikimedia:Privacy policy"=20
  href=3D"http://wikimediafoundation.org/wiki/Privacy_policy">Privacy =
policy</A>=20
  <LI id=3Dabout><A title=3DWikipedia:About=20
  href=3D"http://en.wikipedia.org/wiki/Wikipedia:About">About =
Wikipedia</A>=20
  <LI id=3Ddisclaimer><A title=3D"Wikipedia:General disclaimer"=20
  =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:General_disclaimer">Discla=
imers</A>=20
  </LI></UL></DIV>
<SCRIPT type=3Dtext/javascript>if (window.runOnloadHook) =
runOnloadHook();</SCRIPT>
</DIV><!-- Served by srv119 in 0.062 secs. --></BODY></HTML>

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://en.wikipedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png

iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAMAAABUFvrSAAAAA3NCSVQICAjb4U/gAAAClFBMVEUC
KWuqqtbmxQbRvxS1xc+BdgdzlKmEq76qqqpBeZ3HxHrt7OZbZ1LWxE0lX3hxeUWzq2nY3N5WhKPQ
dQoAUIThyiSwrTY9RpT29vbGwqSjtsTHzdDAaQoAZplPepgATICdo6vp1Asyao7o59vO1NfQx2Ph
2XiOkTeKjY3yzQnW1smGla7s2yNemLXflg06hK0wO3h2pLvm2D/1sgfn4akHV4uYscEbLHZEdphO
hKauspWsrr4ObZ3q2RqqbRTWyS8haJa5xJuFhbgrS4Ipe6WrusXX0rXW1tY4cpfBztff2Zrlqg7w
yhTIuEyFo7dSkbFskKjShg3Yyhj91geVrb7EvnPy3TXd0WchZZKHp7xmi6Ln1lLdxUWMm7ayv8fT
zZbe3sm7w8/AcA7w8PDNtzQaW4YmJpoybZTOzcXe3taes8D0ywDh5OZAXIvo5Lzg14rk1zTPzr40
gafr1RBJZJFCU1rbugvlziGWehNqnbd0nLWlvsv13hsIVIaRkqXF0NfwvANEiq0wToIYX4zgnRHm
0A7UiRL36Efc4OJMf6PoxxqgpJXYzlX/yQYbdKGNkrv4xhHq4RLO1tzo0TKUbg5biqgGHXn31xDu
3hnj12rHuUSclS1ijqzWzozm3IXsvxLZ2ebBag2ambbMfRU4dJvlpxG1chKdtcb05D3q6M2LpLXz
3ynExc5ika/VnBnMzMze3t6mu8h8nbMiY42sv8ufq8AQWozGdBXgz0zWvQ6Oq77gsQlNepnDwMLo
vQJSg6NGYY4XXIvc1644Q2fu2EdNVV31vAf3zwZ7p73m5uYpapTUfQ8AU4mboKarqK2UtMS6sEDR
ymyVmYq5taFUWZrt0R/Hdg/L0dTBvnnOy4Hi2pLr2FEpPiAVAAAACXBIWXMAAArwAAAK8AFCrDSY
AAAEkElEQVRIx+3Q+1tTdRwH8NNYzHkiPTQqmfMCA+MST0NDSiBM8uyEjYVcBoa4jsTtO8SNBDbm
nGN2RgQBrQ1bGt6mY9SBM7nMS2DJ+k5yXUXwn+kckMT19Dz1ID/0PL1/OJ/P+Xy+39cPX2TNKgVZ
882q5H94OTz7WGo21NTUzK48YXDl0funj1ZWPhkYX5aon6NiKt+o3PtlcnLyo6lPqzX78L+JdmGv
dYeNw+HCwo7mwtL0yr3jpY/kWAneqsVDMrHYjbvFPrFbJlb7BDhbcIFbsrCXsbJaHQ57vd7ZWe+N
uVt4lE7H4/F0jYmpzs4bOK72erlDw5JWs1lmFuThWT5JqEtmlmlb8wQCtrCthNtr2WGoQBAOa5pS
xLteeHN9zJFOa1I9j7fV6XRePv7bLnFKk+YhLJg1D+MSvMBcYM5r7dJqW1txrphD+AKMD2eFCrr+
8hTISSn+y+0N+DsRHbz66RMn6h09Pf392z7G8ZMId8jAXsZDeS+zzyEhsn4wsB0Lc4UdSri9Nk+L
ZxWEwRiGTGJ48WFn+nvXbl5rb2/Pnw7odNb9X9zFsEkEYyM1cF8+9zVgfClGGDCCwLiC8bmp1GDg
YwIJH1sWFqZpREPX/nj7cFLSJ9OnxsbGzn89HeANFu/spmkNQv/T+A2P/S7Bt04/39im23/xzsac
nI3ntwesJWuf2fKv4LAswpP0obWFzj5nx6l7OS0tOc/lB/oS5z6sWCFMUYiGop76LmrQcfbepZan
Wy7duRjoa6A+6KYoDUKxMVbVURQeVyWm/oznWXWcnV5o/YyaUmZS0mql3OOJ42bRRopiYQAQDQB3
15W0JSWlDeR8xj5FfmBrScLtLQBoEMBmZsYFQOzoqBcAguAGJpPHok7xcA0N+BY/LVQBn6Vu5KC+
mqalwLMJABaGEJmEDacjrNZ9DkfavYGB99tvHrMOJqx7HUINAtm8KmII6BJNSTE7w4wAMDIVZIKm
SA8YsQRtNq8wGlNNSRWMSfnWiBBGy2nPdQgX4SZ4Zf22hO87fm8LbE97t/1Tx8REydwr5yBsWoQz
GRkmzwxKXaO+MlHG8Kh+OJg7Kx/KMOpjgyJ+2QUfw2REuzCVQiFUGP1QKFqC96jhuZ33S2JSU/c5
+vqmz7ZlWz/69fNuqN6zCCtHbGV29r5FNWS32G02CA1BQq7nGt+Uz6SSK/1xU8NQ5feLRGUQfrsE
V1Rcxb56qfhIX3Zzs+PB5aRj2Y3pPT8dx7CrFRUcPKPsZTYXuYPq3KAhZI91qTCoUJnkevsFCENG
HxQa3YSI6QUsbGEuUEswiqLc7fj4+f4D8+m6+fGJiebUHWfGG1AUAJTLjB19TdTrtvRmWPRD1aZe
VbV9NLdXPmQKCl0WIx/VjxLYlA2lVH6FTcoIUZcIRVmYfBgU3TGPHrBeKY2IOvPgAestLcjrHrKo
HOVHY2TG5iofSRJMlUKBRXpQflVVUSRB8ssBiCwiQfnBWCVZxxAZm0hyGUyS8Sja2Yk2dO54+0pi
A7myPAaTJNxdS5K3Dm2oJdEnCz+5sPCLq5L/JLxK+QOx6XbtY06PNgAAAABJRU5ErkJggg==

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://en.wikipedia.org/images/wikimedia-button.png

iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAMAAABUFvrSAAAAA3NCSVQICAjb4U/gAAAAilBMVEVj
ZGeGh4nn6+yZmZni5uTW1taAgYNtbnGkpKYBhbLd3t1svZdCroKtrq/Cv79ztMs7ncDMzMy5t7en
zL3Hx8h6e37l5eXw8PDK0dOVwtOozdsfkrnKk47E1tUNiba8RjxKs4bN3eKawM2SybIslr5Yp8TV
4N+80dbY5Oek08O5zNJ+wqW20cf29vZ09tAFAAAACXBIWXMAAArwAAAK8AFCrDSYAAACh0lEQVR4
Xs3RiZKbMAwGYMu3zX2T+072fP/XqwSUppM0bLfdmf1DxlhmvhGCRV8UFmVfkm8Ig/0beLnZbJYf
cuNKT8Htr6BLcvuBCAv5o/Pf4HjTJ/4AbCyICVhRXk6JUssBXiqVpK16FCvyXJcPHvgJn5xLVD7C
ydqdHsKEWjsN7x3B2QC3Kun2k5mE29Rhh4eiH3JcHOgN1vt/h/fIXN7CbZEtl8us2IbFauH6YRir
FBO0Wqa6K1bM5gzLQDvGtNKMGdEqrcmrRth7fyIlCMPtM26et2EYUGlxwZ0w3jKDz2WWeVSZ9Z5g
lltGBY8B8LERtHgwLPeUHsZJ7FfoYc/o0vq2X+Ms8Chj1gD+he/gCjzBMasMq6hgbdSJwtCSsaiC
K3jh1i8FgWFwfg0pxQXhmceAYZkwLO5hMGUPx2DtLWxZLlg2wFJKhC9FBwZ+gFcES0zOhGxZJaVl
eKmqUrKDVV+QGACJo6ClqgDwDjPC87cRHjveS0rVSimiAZalAdXBQ4ExkEAfTyGcd2WjRhhnPDv3
o5AdvN3N6OPJT4fguq4T51J5uIJf65RK9efTw3Pn3PwcjHBwnq+dS+qHiadgzvkT9nc8o9zDwWp3
xEns+MOU412W3Z72MKcG0119CF7lITjIXepw6nesSliuhS0BIg48ByEzDaXW+Z9gnqC0QOoJf3x+
xN3pXpMRt23FJXAuFHBdRpFQXEbl3Y4bCj85TJrMZrMkXXduc5syaoSHpsGLVl2WStRNE5XNTQju
Qj1TEKUk5N7CGiypNApcc4BYaVClju7CQ+bY6YCn8+ZusmsArk8ewEQn6WKxOCZz3kzDXEzB71fh
T7sn/v4/QvBNvjv8RfkBEHe0Bwh42FAAAAAASUVORK5CYII=

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/common/shared.css?141

.mw-plusminus-null {
	COLOR: #aaa
}
.texvc {
	DIRECTION: ltr; unicode-bidi: embed
}
IMG.tex {
	VERTICAL-ALIGN: middle
}
SPAN.texhtml {
	FONT-FAMILY: serif
}
#toolbar {
	CLEAR: both
}
#wpTextbox1 {
	CLEAR: both
}
DIV#mw-js-message {
	BORDER-RIGHT: #ddd 1px solid; PADDING-RIGHT: 2.5%; BORDER-TOP: #ddd 1px =
solid; PADDING-LEFT: 2.5%; PADDING-BOTTOM: 0.5em; MARGIN: 1em 5%; =
BORDER-LEFT: #ddd 1px solid; PADDING-TOP: 0.5em; BORDER-BOTTOM: #ddd 1px =
solid; BACKGROUND-COLOR: #fcfcfc
}
.editsection {
	FLOAT: right; MARGIN-LEFT: 5px
}
TABLE.filehistory {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; BORDER-COLLAPSE: collapse
}
TABLE.filehistory TH {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #ccc =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: =
top; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc =
1px solid
}
TABLE.filehistory TD {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #ccc =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: =
top; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc =
1px solid
}
TABLE.filehistory TH {
	TEXT-ALIGN: left
}
TABLE.filehistory TD.mw-imagepage-filesize {
	WHITE-SPACE: nowrap
}
TABLE.filehistory TH.mw-imagepage-filesize {
	WHITE-SPACE: nowrap
}
LI SPAN.deleted {
	COLOR: #888; FONT-STYLE: italic; TEXT-DECORATION: line-through
}
SPAN.history-deleted {
	COLOR: #888; FONT-STYLE: italic; TEXT-DECORATION: line-through
}
BODY.ltr TD.mw-label {
	TEXT-ALIGN: right
}
BODY.ltr TD.mw-input {
	TEXT-ALIGN: left
}
BODY.ltr TD.mw-submit {
	TEXT-ALIGN: left
}
BODY.rtl TD.mw-label {
	TEXT-ALIGN: left
}
BODY.rtl TD.mw-input {
	TEXT-ALIGN: right
}
BODY.rtl TD.mw-submit {
	TEXT-ALIGN: right
}
TD.mw-label {
	VERTICAL-ALIGN: top
}
TD.mw-submit {
	WHITE-SPACE: nowrap
}
BODY.rtl .thumbcaption {
	TEXT-ALIGN: right
}
BODY.rtl .magnify {
	FLOAT: left
}
BODY.ltr .thumbcaption {
	TEXT-ALIGN: left
}
BODY.ltr .magnify {
	FLOAT: right
}
.mw-hidden-cats-hidden {
	DISPLAY: none
}
.catlinks-allhidden {
	DISPLAY: none
}
P.mw-ipb-conveniencelinks {
	FONT-SIZE: 90%; FLOAT: right
}
P.mw-filedelete-editreasons {
	FONT-SIZE: 90%; FLOAT: right
}
P.mw-delete-editreasons {
	FONT-SIZE: 90%; FLOAT: right
}
DIV.searchresult {
	FONT-SIZE: 95%; WIDTH: 38em
}
.mw-search-results LI {
	PADDING-BOTTOM: 1em
}
.mw-search-result-data {
	FONT-SIZE: 97%; COLOR: green
}
DIV#mw-search-interwiki {
	BORDER-RIGHT: #aaaaaa 1px solid; BORDER-TOP: #aaaaaa 1px solid; =
MARGIN-TOP: 2ex; FLOAT: right; BORDER-LEFT: #aaaaaa 1px solid; WIDTH: =
18em; BORDER-BOTTOM: #aaaaaa 1px solid
}
DIV#mw-search-interwiki LI {
	FONT-SIZE: 95%
}
.mw-search-interwiki-more {
	FONT-SIZE: 90%; FLOAT: right
}
SPAN.searchalttitle {
	FONT-SIZE: 95%
}
DIV.searchdidyoumean {
	FONT-SIZE: 127%; PADDING-BOTTOM: 1ex; PADDING-TOP: 1ex
}
.mw-userrights-disabled {
	COLOR: #888
}
TABLE.mw-userrights-groups * TD {
	PADDING-RIGHT: 1.5em
}
TABLE.mw-userrights-groups * TH {
	PADDING-RIGHT: 1.5em
}
.os-suggest {
	BORDER-RIGHT: #aaaaaa 1px solid; BORDER-TOP: #aaaaaa 1px solid; =
FONT-SIZE: 95%; Z-INDEX: 99; LEFT: 0px; VISIBILITY: hidden; OVERFLOW-X: =
hidden; OVERFLOW: auto; BORDER-LEFT: #aaaaaa 1px solid; WIDTH: 0px; =
BORDER-BOTTOM: #aaaaaa 1px solid; POSITION: absolute; TOP: 0px; =
BACKGROUND-COLOR: white
}
TABLE.os-suggest-results {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 95%; =
BORDER-BOTTOM-WIDTH: 0px; WIDTH: 100%; CURSOR: pointer; BORDER-COLLAPSE: =
collapse; BORDER-RIGHT-WIDTH: 0px
}
TD.os-suggest-result {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; COLOR: =
windowtext; PADDING-TOP: 2px; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
window
}
TD.os-suggest-result-hl {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; COLOR: =
windowtext; PADDING-TOP: 2px; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
window
}
TD.os-suggest-result-hl {
	COLOR: white; BACKGROUND-COLOR: #4c59a6
}
TD.os-suggest-result-hl-webkit {
	COLOR: white; BACKGROUND-COLOR: #4c59a6
}
TD.os-suggest-result-hl {
	COLOR: highlighttext; BACKGROUND-COLOR: highlight
}
.os-suggest-toggle {
	FONT-SIZE: 65%; LEFT: 1ex; POSITION: relative
}
.os-suggest-toggle-def {
	FONT-SIZE: 65%; LEFT: 0px; VISIBILITY: hidden; POSITION: absolute; TOP: =
0px
}
.autocomment {
	COLOR: gray
}
#pagehistory .history-user {
	MARGIN-LEFT: 0.4em; MARGIN-RIGHT: 0.2em
}
#pagehistory SPAN.minor {
	FONT-WEIGHT: bold
}
#pagehistory LI {
	BORDER-RIGHT: white 1px solid; BORDER-TOP: white 1px solid; =
BORDER-LEFT: white 1px solid; BORDER-BOTTOM: white 1px solid
}
#pagehistory LI.selected {
	BORDER-RIGHT: #aaa 1px dashed; BORDER-TOP: #aaa 1px dashed; =
BORDER-LEFT: #aaa 1px dashed; BORDER-BOTTOM: #aaa 1px dashed; =
BACKGROUND-COLOR: #f9f9f9
}
TABLE.mw-listgrouprights-table {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; BORDER-COLLAPSE: collapse
}
TABLE.mw-listgrouprights-table TR {
	VERTICAL-ALIGN: top
}
TABLE.mw-listgrouprights-table TD {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #ccc =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.5em; BORDER-LEFT: #ccc =
1px solid; PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 1px solid
}
TABLE.mw-listgrouprights-table TH {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #ccc =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.5em; BORDER-LEFT: #ccc =
1px solid; PADDING-TOP: 0.5em; BORDER-BOTTOM: #ccc 1px solid
}
H4.mw-specialpagesgroup {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: =
0.3em 0em 0em; PADDING-TOP: 2px; BACKGROUND-COLOR: #dcdcdc
}
#shared-image-dup {
	FONT-STYLE: italic
}
#shared-image-conflict {
	FONT-STYLE: italic
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/monobook/main.css?141

#column-content {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0.6em -12.2em; WIDTH: 100%; PADDING-TOP: 0px
}
#content {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; Z-INDEX: 2; PADDING-BOTTOM: 1em; =
MARGIN: 2.8em 0px 0px 12.2em; PADDING-TOP: 0px; POSITION: relative
}
#column-one {
	PADDING-TOP: 160px
}
#content {
	BORDER-RIGHT: #aaa 1px; BORDER-TOP: #aaa 1px solid; BACKGROUND: white; =
BORDER-LEFT: #aaa 1px solid; COLOR: black; LINE-HEIGHT: 1.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: url(headbg.jpg) =
#f9f9f9 no-repeat 0px 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: =
x-small sans-serif; COLOR: black; PADDING-TOP: 0px
}
#globalWrapper {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 127%; PADDING-BOTTOM: =
0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 0px
}
.visualClear {
	CLEAR: both
}
TABLE {
	FONT-SIZE: 100%; COLOR: black; BACKGROUND-COLOR: white
}
FIELDSET TABLE {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
A {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #002bb8; =
TEXT-DECORATION: none
}
A:visited {
	COLOR: #5a3696
}
A:active {
	COLOR: #faa700
}
A:hover {
	TEXT-DECORATION: underline
}
A.stub {
	COLOR: #772233
}
A.new {
	COLOR: #ba0000
}
#p-personal A.new {
	COLOR: #ba0000
}
A.new:visited {
	COLOR: #a55858
}
#p-personal A.new:visited {
	COLOR: #a55858
}
IMG {
	VERTICAL-ALIGN: middle; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
P {
	MARGIN: 0.4em 0px 0.5em; LINE-HEIGHT: 1.5em
}
P IMG {
	MARGIN: 0px
}
HR {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; MARGIN: 0.2em 0px; COLOR: #aaa; HEIGHT: 1px; BACKGROUND-COLOR: =
#aaa; BORDER-RIGHT-WIDTH: 0px
}
H1 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H2 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H3 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H4 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H5 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H6 {
	FONT-WEIGHT: normal; BACKGROUND: none transparent scroll repeat 0% 0%; =
PADDING-BOTTOM: 0.17em; MARGIN: 0px; COLOR: black; PADDING-TOP: 0.5em; =
BORDER-BOTTOM: #aaa 1px solid
}
H1 {
	FONT-SIZE: 188%
}
H1 .editsection {
	FONT-SIZE: 53%
}
H2 {
	FONT-SIZE: 150%
}
H2 .editsection {
	FONT-SIZE: 67%
}
H3 {
	FONT-WEIGHT: bold; BORDER-BOTTOM-STYLE: none
}
H4 {
	FONT-WEIGHT: bold; BORDER-BOTTOM-STYLE: none
}
H5 {
	FONT-WEIGHT: bold; BORDER-BOTTOM-STYLE: none
}
H6 {
	FONT-WEIGHT: bold; BORDER-BOTTOM-STYLE: none
}
H3 {
	FONT-SIZE: 132%
}
H3 .editsection {
	FONT-WEIGHT: normal; FONT-SIZE: 76%
}
H4 {
	FONT-SIZE: 116%
}
H4 .editsection {
	FONT-WEIGHT: normal; FONT-SIZE: 86%
}
H5 {
	FONT-SIZE: 100%
}
H5 .editsection {
	FONT-WEIGHT: normal
}
H6 {
	FONT-SIZE: 80%
}
H6 .editsection {
	FONT-WEIGHT: normal; FONT-SIZE: 125%
}
UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(bullet.gif); PADDING-BOTTOM: 0px; MARGIN: 0.3em 0px 0px 1.5em; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 0px; LIST-STYLE-TYPE: square
}
OL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-BOTTOM: 0px; MARGIN: 0.3em 0px 0px 3.2em; LINE-HEIGHT: 1.5em; =
PADDING-TOP: 0px
}
LI {
	MARGIN-BOTTOM: 0.1em
}
DT {
	FONT-WEIGHT: bold; MARGIN-BOTTOM: 0.1em
}
DL {
	MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 0.5em
}
DD {
	MARGIN-BOTTOM: 0.1em; MARGIN-LEFT: 2em; LINE-HEIGHT: 1.5em
}
FIELDSET {
	BORDER-RIGHT: #2f6fab 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: =
#2f6fab 1px solid; PADDING-LEFT: 1em; PADDING-BOTTOM: 1em; MARGIN: 1em =
0px; BORDER-LEFT: #2f6fab 1px solid; LINE-HEIGHT: 1.5em; PADDING-TOP: =
0px; BORDER-BOTTOM: #2f6fab 1px solid
}
FIELDSET.nested {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.5em; =
MARGIN: 0px 0px 0.5em; PADDING-TOP: 0px
}
LEGEND {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 95%; =
PADDING-BOTTOM: 0.5em; PADDING-TOP: 0.5em
}
FORM {
	MARGIN: 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
TEXTAREA {
	PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; PADDING-BOTTOM: 0.1em; =
WIDTH: 100%; PADDING-TOP: 0.1em
}
INPUT.historysubmit {
	PADDING-RIGHT: 0.3em! important; PADDING-LEFT: 0.3em! important; =
FONT-SIZE: 94%; PADDING-BOTTOM: 0.3em! important; MARGIN-LEFT: 1.6em; =
CURSOR: pointer; PADDING-TOP: 0px! important; HEIGHT: 1.7em! important
}
SELECT {
	VERTICAL-ALIGN: top
}
ABBR {
	BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: help; COLOR: =
black; BORDER-BOTTOM: black 1px dotted
}
ACRONYM {
	BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: help; COLOR: =
black; BORDER-BOTTOM: black 1px dotted
}
.explain {
	BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: help; COLOR: =
black; BORDER-BOTTOM: black 1px dotted
}
Q {
	FONT-STYLE: italic; FONT-FAMILY: Times, "Times New Roman", serif
}
CODE {
	BACKGROUND-COLOR: #f9f9f9
}
PRE {
	BORDER-RIGHT: #2f6fab 1px dashed; PADDING-RIGHT: 1em; BORDER-TOP: =
#2f6fab 1px dashed; PADDING-LEFT: 1em; PADDING-BOTTOM: 1em; BORDER-LEFT: =
#2f6fab 1px dashed; COLOR: black; LINE-HEIGHT: 1.1em; PADDING-TOP: 1em; =
BORDER-BOTTOM: #2f6fab 1px dashed; BACKGROUND-COLOR: #f9f9f9
}
#siteSub {
	DISPLAY: none
}
#jump-to-nav {
	DISPLAY: none
}
#contentSub {
	FONT-SIZE: 84%; MARGIN: 0px 0px 1.4em 1em; WIDTH: auto; COLOR: #7d7d7d; =
LINE-HEIGHT: 1.2em
}
#contentSub2 {
	FONT-SIZE: 84%; MARGIN: 0px 0px 1.4em 1em; WIDTH: auto; COLOR: #7d7d7d; =
LINE-HEIGHT: 1.2em
}
SPAN.subpages {
	DISPLAY: block
}
#bodyContent H1 {
	MARGIN-BOTTOM: 0.6em
}
#bodyContent H2 {
	MARGIN-BOTTOM: 0.6em
}
#bodyContent H3 {
	MARGIN-BOTTOM: 0.3em
}
#bodyContent H4 {
	MARGIN-BOTTOM: 0.3em
}
#bodyContent H5 {
	MARGIN-BOTTOM: 0.3em
}
.firstHeading {
	MARGIN-BOTTOM: 0.1em; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em
}
.usermessage {
	BORDER-RIGHT: #ffa500 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: =
#ffa500 1px solid; PADDING-LEFT: 1em; FONT-WEIGHT: bold; PADDING-BOTTOM: =
0.5em; MARGIN: 2em 0px 1em; VERTICAL-ALIGN: middle; BORDER-LEFT: #ffa500 =
1px solid; COLOR: black; PADDING-TOP: 0.5em; BORDER-BOTTOM: #ffa500 1px =
solid; BACKGROUND-COLOR: #ffce7b
}
#siteNotice {
	PADDING-RIGHT: 0.9em; PADDING-LEFT: 0.9em; FONT-SIZE: 95%; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px; TEXT-ALIGN: center
}
#siteNotice P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.success {
	FONT-SIZE: larger; COLOR: green
}
.error {
	FONT-SIZE: larger; COLOR: red
}
.errorbox {
	BORDER-RIGHT: 2px solid; PADDING-RIGHT: 1em; BORDER-TOP: 2px solid; =
PADDING-LEFT: 1em; FONT-SIZE: larger; FLOAT: left; MARGIN-BOTTOM: 2em; =
PADDING-BOTTOM: 0.5em; BORDER-LEFT: 2px solid; COLOR: #000; PADDING-TOP: =
0.5em; BORDER-BOTTOM: 2px solid
}
.successbox {
	BORDER-RIGHT: 2px solid; PADDING-RIGHT: 1em; BORDER-TOP: 2px solid; =
PADDING-LEFT: 1em; FONT-SIZE: larger; FLOAT: left; MARGIN-BOTTOM: 2em; =
PADDING-BOTTOM: 0.5em; BORDER-LEFT: 2px solid; COLOR: #000; PADDING-TOP: =
0.5em; BORDER-BOTTOM: 2px solid
}
.errorbox {
	BORDER-LEFT-COLOR: red; BORDER-BOTTOM-COLOR: red; BORDER-TOP-COLOR: =
red; BACKGROUND-COLOR: #fff2f2; BORDER-RIGHT-COLOR: red
}
.successbox {
	BORDER-LEFT-COLOR: green; BORDER-BOTTOM-COLOR: green; BORDER-TOP-COLOR: =
green; BACKGROUND-COLOR: #dfd; BORDER-RIGHT-COLOR: green
}
.errorbox H2 {
	DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 1em; MARGIN: 0px 0.5em =
0px 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.successbox H2 {
	DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 1em; MARGIN: 0px 0.5em =
0px 0px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.catlinks {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; =
BORDER-TOP: #aaa 1px solid; MARGIN-TOP: 1em; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 5px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f9f9f9
}
.documentDescription {
	DISPLAY: block; FONT-WEIGHT: bold; MARGIN: 1em 0px; LINE-HEIGHT: 1.5em
}
.documentByLine {
	CLEAR: both; FONT-WEIGHT: normal; FONT-SIZE: 90%; COLOR: #76797c; =
TEXT-ALIGN: right
}
.center {
	WIDTH: 100%; TEXT-ALIGN: center
}
*.center * {
	MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
.small {
	FONT-SIZE: 94%
}
.small * {
	FONT-SIZE: 94%
}
TABLE.small {
	FONT-SIZE: 100%
}
#toc {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
.toc {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
.mw-warning {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
#toc H2 {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: =
bold; FONT-SIZE: 100%; PADDING-BOTTOM: 0px; BORDER-TOP-STYLE: none; =
PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
BORDER-BOTTOM-STYLE: none
}
.toc H2 {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: =
bold; FONT-SIZE: 100%; PADDING-BOTTOM: 0px; BORDER-TOP-STYLE: none; =
PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
BORDER-BOTTOM-STYLE: none
}
#toc #toctitle {
	TEXT-ALIGN: center
}
.toc #toctitle {
	TEXT-ALIGN: center
}
#toc .toctitle {
	TEXT-ALIGN: center
}
.toc .toctitle {
	TEXT-ALIGN: center
}
#toc UL {
	PADDING-LEFT: 0px; LIST-STYLE-IMAGE: none; MARGIN-LEFT: 0px; =
LIST-STYLE-TYPE: none; TEXT-ALIGN: left
}
.toc UL {
	PADDING-LEFT: 0px; LIST-STYLE-IMAGE: none; MARGIN-LEFT: 0px; =
LIST-STYLE-TYPE: none; TEXT-ALIGN: left
}
#toc UL UL {
	MARGIN: 0px 0px 0px 2em
}
.toc UL UL {
	MARGIN: 0px 0px 0px 2em
}
#toc .toctoggle {
	FONT-SIZE: 94%
}
.toc .toctoggle {
	FONT-SIZE: 94%
}
.mw-warning {
	MARGIN-LEFT: 50px; MARGIN-RIGHT: 50px; TEXT-ALIGN: center
}
DIV.floatright {
	BORDER-TOP-WIDTH: 0px; CLEAR: right; BORDER-LEFT-WIDTH: 0px; FLOAT: =
right; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0.5em 0.5em; POSITION: =
relative; BORDER-RIGHT-WIDTH: 0px
}
TABLE.floatright {
	BORDER-TOP-WIDTH: 0px; CLEAR: right; BORDER-LEFT-WIDTH: 0px; FLOAT: =
right; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0.5em 0.5em; POSITION: =
relative; BORDER-RIGHT-WIDTH: 0px
}
DIV.floatright P {
	FONT-STYLE: italic
}
DIV.floatleft {
	BORDER-TOP-WIDTH: 0px; CLEAR: left; BORDER-LEFT-WIDTH: 0px; FLOAT: =
left; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0.5em 0.5em 0px; POSITION: =
relative; BORDER-RIGHT-WIDTH: 0px
}
TABLE.floatleft {
	BORDER-TOP-WIDTH: 0px; CLEAR: left; BORDER-LEFT-WIDTH: 0px; FLOAT: =
left; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0.5em 0.5em 0px; POSITION: =
relative; BORDER-RIGHT-WIDTH: 0px
}
DIV.floatleft P {
	FONT-STYLE: italic
}
DIV.thumb {
	BORDER-LEFT-COLOR: white; MARGIN-BOTTOM: 0.5em; BORDER-BOTTOM-COLOR: =
white; WIDTH: auto; BORDER-TOP-STYLE: solid; BORDER-TOP-COLOR: white; =
BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-RIGHT-COLOR: =
white; BORDER-BOTTOM-STYLE: solid
}
DIV.thumbinner {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 3px! important; =
BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 3px! important; FONT-SIZE: =
94%; PADDING-BOTTOM: 3px! important; OVERFLOW: hidden; BORDER-LEFT: #ccc =
1px solid; PADDING-TOP: 3px! important; BORDER-BOTTOM: #ccc 1px solid; =
BACKGROUND-COLOR: #f9f9f9; TEXT-ALIGN: center
}
HTML .thumbimage {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
HTML .thumbcaption {
	PADDING-RIGHT: 3px! important; PADDING-LEFT: 3px! important; FONT-SIZE: =
94%; PADDING-BOTTOM: 3px! important; BORDER-TOP-STYLE: none; =
LINE-HEIGHT: 1.4em; PADDING-TOP: 3px! important; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: =
none
}
DIV.magnify {
	BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; =
BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important
}
DIV.magnify A {
	DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; =
BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important
}
DIV.magnify IMG {
	DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; =
BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important
}
DIV.tright {
	BORDER-TOP-WIDTH: 0.5em; CLEAR: right; BORDER-LEFT-WIDTH: 1.4em; FLOAT: =
right; BORDER-BOTTOM-WIDTH: 0.8em; BORDER-RIGHT-WIDTH: 0px
}
DIV.tleft {
	BORDER-TOP-WIDTH: 0.5em; CLEAR: left; BORDER-LEFT-WIDTH: 0px; FLOAT: =
left; BORDER-BOTTOM-WIDTH: 0.8em; MARGIN-RIGHT: 0.5em; =
BORDER-RIGHT-WIDTH: 1.4em
}
IMG.thumbborder {
	BORDER-RIGHT: #dddddd 1px solid; BORDER-TOP: #dddddd 1px solid; =
BORDER-LEFT: #dddddd 1px solid; BORDER-BOTTOM: #dddddd 1px solid
}
.hiddenStructure {
	DISPLAY: none
}
TABLE.rimage {
	FLOAT: right; MARGIN-BOTTOM: 1em; MARGIN-LEFT: 1em; POSITION: relative; =
TEXT-ALIGN: center
}
.toccolours {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
DIV.townBox {
	CLEAR: right; BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 0.3em; =
BORDER-TOP: gray 1px solid; PADDING-LEFT: 0.3em; BACKGROUND: white; =
FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN-LEFT: 1em; OVERFLOW: hidden; =
BORDER-LEFT: gray 1px solid; WIDTH: 200px; PADDING-TOP: 0.3em; =
BORDER-BOTTOM: gray 1px solid; POSITION: relative
}
DIV.townBox DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 96%; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0.3em; PADDING-TOP: 0px
}
DIV.townBox DL DT {
	BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0.4em 0px 0px
}
DIV.townBox DL DD {
	MARGIN: 0.1em 0px 0px 1.1em; BACKGROUND-COLOR: #f3f3f3
}
.special LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; LINE-HEIGHT: 1.4em; PADDING-TOP: 0px
}
#bodyContent A.external {
	PADDING-RIGHT: 13px; BACKGROUND: url(external.png) no-repeat right =
center
}
#bodyContent A[href^=3D'gopher://'] {
	PADDING-RIGHT: 13px; BACKGROUND: url(external.png) no-repeat right =
center
}
#bodyContent A[href^=3D'https://'] {
	PADDING-RIGHT: 16px; BACKGROUND: url(lock_icon.gif) no-repeat right =
center
}
.link-https {
	PADDING-RIGHT: 16px; BACKGROUND: url(lock_icon.gif) no-repeat right =
center
}
#bodyContent A[href^=3D'mailto:'] {
	PADDING-RIGHT: 18px; BACKGROUND: url(mail_icon.gif) no-repeat right =
center
}
.link-mailto {
	PADDING-RIGHT: 18px; BACKGROUND: url(mail_icon.gif) no-repeat right =
center
}
#bodyContent A[href^=3D'news://'] {
	PADDING-RIGHT: 18px; BACKGROUND: url(news_icon.png) no-repeat right =
center
}
#bodyContent A[href^=3D'ftp://'] {
	PADDING-RIGHT: 18px; BACKGROUND: url(file_icon.gif) no-repeat right =
center
}
.link-ftp {
	PADDING-RIGHT: 18px; BACKGROUND: url(file_icon.gif) no-repeat right =
center
}
#bodyContent A[href^=3D'irc://'] {
	PADDING-RIGHT: 18px; BACKGROUND: url(discussionitem_icon.gif) no-repeat =
right center
}
.link-irc {
	PADDING-RIGHT: 18px; BACKGROUND: url(discussionitem_icon.gif) no-repeat =
right center
}
#bodyContent A[href$=3D'.ogg'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.OGG'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.mid'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.MID'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.midi'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.MIDI'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.mp3'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.MP3'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.wav'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.WAV'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.wma'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.WMA'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
.link-audio {
	PADDING-RIGHT: 13px; BACKGROUND: url(audio.png) no-repeat right center
}
#bodyContent A[href$=3D'.ogm'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.OGM'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.avi'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.AVI'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.mpeg'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.MPEG'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.mpg'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.MPG'].external {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
.link-video {
	PADDING-RIGHT: 13px; BACKGROUND: url(video.png) no-repeat right center
}
#bodyContent A[href$=3D'.pdf'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A[href$=3D'.PDF'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A[href*=3D'.pdf#'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A[href*=3D'.PDF#'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A[href*=3D'.pdf?'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A[href*=3D'.PDF?'].external {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
.link-document {
	PADDING-RIGHT: 12px; BACKGROUND: url(document.png) no-repeat right =
center
}
#bodyContent A.extiw {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; COLOR: #36b; PADDING-TOP: 0px
}
#bodyContent A.extiw:active {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; COLOR: #36b; PADDING-TOP: 0px
}
#bodyContent A.external {
	COLOR: #36b
}
#bodyContent .plainlinks A {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px! =
important; PADDING-TOP: 0px! important
}
.portlet {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0.5em; OVERFLOW: hidden; WIDTH: 11.6em; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.portlet H4 {
	FONT-WEIGHT: normal; FONT-SIZE: 95%; WHITE-SPACE: nowrap
}
.portlet H5 {
	PADDING-RIGHT: 1em; DISPLAY: inline; PADDING-LEFT: 0.5em; FONT-WEIGHT: =
normal; FONT-SIZE: 91%; BACKGROUND: none transparent scroll repeat 0% =
0%; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: lowercase; PADDING-TOP: 0px; =
WHITE-SPACE: nowrap; HEIGHT: 1em
}
.portlet H6 {
	BORDER-RIGHT: #2f6fab 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: =
#2f6fab 1px solid; DISPLAY: block; PADDING-LEFT: 1em; FONT-WEIGHT: =
normal; FONT-SIZE: 1em; BACKGROUND: #ffae2e; PADDING-BOTTOM: 0px; =
TEXT-TRANSFORM: lowercase; BORDER-LEFT: #2f6fab 1px solid; PADDING-TOP: =
0px; BORDER-BOTTOM: #2f6fab 1px; WHITE-SPACE: nowrap; HEIGHT: 1.2em
}
.pBody {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.8em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.5em; FONT-SIZE: 95%; PADDING-BOTTOM: 0.3em; =
BORDER-LEFT: #aaa 1px solid; COLOR: black; PADDING-TOP: 0px; =
BORDER-BOTTOM: #aaa 1px solid; BORDER-COLLAPSE: collapse; =
BACKGROUND-COLOR: white
}
.portlet H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.portlet H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.portlet H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.portlet H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.portlet UL {
	FONT-SIZE: 95%; LIST-STYLE-IMAGE: url(bullet.gif); LINE-HEIGHT: 1.5em; =
LIST-STYLE-TYPE: square
}
.portlet LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#p-logo {
	Z-INDEX: 3; LEFT: 0px; OVERFLOW: visible; WIDTH: 12em; POSITION: =
absolute; TOP: 0px; HEIGHT: 155px
}
#p-logo H5 {
	DISPLAY: none
}
#p-logo A {
	BACKGROUND-POSITION: 35% 50%; DISPLAY: block; WIDTH: 12.2em; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 155px; TEXT-DECORATION: none
}
#p-logo A:hover {
	BACKGROUND-POSITION: 35% 50%; DISPLAY: block; WIDTH: 12.2em; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 155px; TEXT-DECORATION: none
}
#p-search {
	Z-INDEX: 3; POSITION: relative
}
INPUT.searchButton {
	MARGIN-TOP: 1px; FONT-SIZE: 95%
}
#searchGoButton {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-WEIGHT: bold
}
#searchInput {
	FONT-SIZE: 95%; MARGIN: 0px; WIDTH: 10.9em
}
#p-search .pBody {
	PADDING-RIGHT: 0.4em; PADDING-LEFT: 0.4em; PADDING-BOTTOM: 0.4em; =
PADDING-TOP: 0.5em; TEXT-ALIGN: center
}
#p-personal {
	LEFT: 0px; POSITION: absolute; TOP: 0px
}
#p-personal {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
visible; WIDTH: 100%; BORDER-TOP-STYLE: none; LINE-HEIGHT: 1.2em; =
PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; WHITE-SPACE: nowrap; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#p-personal H5 {
	DISPLAY: none
}
#p-personal .portlet {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
visible; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#p-personal .pBody {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
visible; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#p-personal UL {
	PADDING-RIGHT: 2em; PADDING-LEFT: 3em; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: default; =
COLOR: #2f6fab; BORDER-TOP-STYLE: none; LINE-HEIGHT: 1.4em; PADDING-TOP: =
0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; LIST-STYLE-TYPE: =
none; TEXT-ALIGN: right; BORDER-BOTTOM-STYLE: none
}
#p-personal LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: =
none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN-LEFT: =
1em; COLOR: #2f6fab; BORDER-TOP-STYLE: none; LINE-HEIGHT: 1.2em; =
PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
BORDER-BOTTOM-STYLE: none
}
#p-personal LI A {
	BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: =
0.2em; COLOR: #005896; TEXT-DECORATION: none
}
#p-personal LI A:hover {
	PADDING-BOTTOM: 0.2em; BACKGROUND-COLOR: white; TEXT-DECORATION: none
}
#p-personal LI.active A:hover {
	BACKGROUND-COLOR: transparent
}
LI#pt-userpage {
	PADDING-LEFT: 20px; BACKGROUND: url(user.gif) no-repeat left top; =
TEXT-TRANSFORM: none
}
LI#pt-anonuserpage {
	PADDING-LEFT: 20px; BACKGROUND: url(user.gif) no-repeat left top; =
TEXT-TRANSFORM: none
}
LI#pt-login {
	PADDING-LEFT: 20px; BACKGROUND: url(user.gif) no-repeat left top; =
TEXT-TRANSFORM: none
}
#p-personal UL {
	TEXT-TRANSFORM: lowercase
}
#p-personal LI.active {
	FONT-WEIGHT: bold
}
#p-cactions {
	PADDING-LEFT: 1em; FONT-SIZE: 95%; BACKGROUND: none transparent scroll =
repeat 0% 0%; LEFT: 11.5em; MARGIN: 0px; OVERFLOW: visible; WIDTH: 76%; =
LINE-HEIGHT: 1.1em; WHITE-SPACE: nowrap; LIST-STYLE-TYPE: none; =
POSITION: absolute; TOP: 1.3em; BORDER-COLLAPSE: collapse
}
#p-cactions UL {
	LIST-STYLE-TYPE: none
}
#p-cactions LI {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px =
solid; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: white; =
PADDING-BOTTOM: 0.1em; MARGIN: 0px 0.3em 0px 0px; OVERFLOW: visible; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #aaa 1px
}
#p-cactions LI.selected {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; =
BORDER-LEFT-COLOR: #fabd23; BORDER-BOTTOM-COLOR: #fabd23; =
PADDING-BOTTOM: 0.2em; BORDER-TOP-COLOR: #fabd23; PADDING-TOP: 0px; =
BORDER-RIGHT-COLOR: #fabd23
}
#p-cactions LI A {
	PADDING-RIGHT: 0.8em; PADDING-LEFT: 0.8em; PADDING-BOTTOM: 0.3em; =
MARGIN: 0px; COLOR: #002bb8; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; POSITION: relative; =
BACKGROUND-COLOR: #fbfbfb; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: =
none
}
#p-cactions LI.selected A {
	PADDING-RIGHT: 1em! important; PADDING-LEFT: 1em! important; Z-INDEX: =
3; PADDING-BOTTOM: 0.2em! important; PADDING-TOP: 0px! important; =
BACKGROUND-COLOR: white
}
#p-cactions .new A {
	COLOR: #ba0000
}
#p-cactions LI A:hover {
	Z-INDEX: 3; BACKGROUND-COLOR: white; TEXT-DECORATION: none
}
#p-cactions H5 {
	DISPLAY: none
}
#p-cactions LI.istalk {
	MARGIN-RIGHT: 0px
}
#p-cactions LI.istalk A {
	PADDING-RIGHT: 0.5em
}
#p-cactions #ca-addsection A {
	PADDING-RIGHT: 0.4em; PADDING-LEFT: 0.4em
}
LI#ca-talk {
	MARGIN-RIGHT: 1.6em
}
LI#ca-watch {
	MARGIN-LEFT: 1.6em
}
LI#ca-unwatch {
	MARGIN-LEFT: 1.6em
}
LI#ca-varlang-0 {
	MARGIN-LEFT: 1.6em
}
LI#ca-print {
	MARGIN-LEFT: 1.6em
}
#p-cactions .pBody {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 1em; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; =
BORDER-RIGHT-WIDTH: 0px
}
#p-cactions .hiddenStructure {
	DISPLAY: none
}
#p-cactions LI A {
	TEXT-TRANSFORM: lowercase
}
#p-tbx {
	Z-INDEX: 3; POSITION: relative
}
#p-lang {
	Z-INDEX: 3; POSITION: relative
}
#t-ispermalink {
	COLOR: #999
}
#t-iscite {
	COLOR: #999
}
#footer {
	PADDING-RIGHT: 0px; BORDER-TOP: #fabd23 1px solid; PADDING-LEFT: 0px; =
FONT-SIZE: 90%; PADDING-BOTTOM: 1.2em; MARGIN: 0.6em 0px 1em; =
PADDING-TOP: 0.4em; BORDER-BOTTOM: #fabd23 1px solid; BACKGROUND-COLOR: =
white; TEXT-ALIGN: center
}
#footer LI {
	DISPLAY: inline; MARGIN: 0px 1.3em
}
#f-poweredbyico {
	MARGIN: 0px 8px; POSITION: relative; TOP: -2px
}
#f-copyrightico {
	MARGIN: 0px 8px; POSITION: relative; TOP: -2px
}
#f-poweredbyico {
	FLOAT: right; HEIGHT: 1%
}
#f-copyrightico {
	FLOAT: left; HEIGHT: 1%
}
#preftoc {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 0px
}
#preftoc LI {
	COLOR: #000; BACKGROUND-COLOR: #f0f0f0
}
#preftoc LI {
	BORDER-RIGHT: #716f64 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #fff =
1px solid; PADDING-LEFT: 0px; Z-INDEX: 3; FLOAT: left; LIST-STYLE-IMAGE: =
none; PADDING-BOTTOM: 3px; MARGIN: 1px -2px 1px 2px; BORDER-LEFT: #fff =
1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #fff 0px solid; WHITE-SPACE: =
nowrap; LIST-STYLE-TYPE: none; POSITION: relative
}
#preftoc LI.selected {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: =
bold; BORDER-LEFT: #aaa 1px solid; CURSOR: default; MARGIN-RIGHT: -3px; =
PADDING-TOP: 2px; BORDER-BOTTOM: #aaa 1px; TOP: 1px; BACKGROUND-COLOR: =
#f9f9f9
}
#preftoc > LI.selected {
	TOP: 2px
}
#preftoc A {
	PADDING-RIGHT: 0.7em; DISPLAY: block; PADDING-LEFT: 0.7em; =
PADDING-BOTTOM: 0px; COLOR: #000; PADDING-TOP: 0px; POSITION: relative; =
TEXT-DECORATION: none
}
#preftoc A:active {
	PADDING-RIGHT: 0.7em; DISPLAY: block; PADDING-LEFT: 0.7em; =
PADDING-BOTTOM: 0px; COLOR: #000; PADDING-TOP: 0px; POSITION: relative; =
TEXT-DECORATION: none
}
#preftoc LI.selected A {
	CURSOR: default; TEXT-DECORATION: none
}
#prefcontrol {
	CLEAR: both; PADDING-TOP: 2em
}
#preferences {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 1.5em; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 1.5em; PADDING-BOTTOM: 1.5em; =
MARGIN: 0px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 1.5em; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f9f9f9
}
.prefsection {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.prefsection FIELDSET {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; FLOAT: left; =
BORDER-LEFT: #aaa 1px solid; MARGIN-RIGHT: 2em; BORDER-BOTTOM: #aaa 1px =
solid
}
.prefsection LEGEND {
	FONT-WEIGHT: bold
}
.prefsection TABLE {
	BACKGROUND-COLOR: #f9f9f9
}
.prefsection LEGEND {
	BACKGROUND-COLOR: #f9f9f9
}
.mainLegend {
	DISPLAY: none
}
DIV.prefsectiontip {
	PADDING-RIGHT: 2em; PADDING-LEFT: 2em; FONT-SIZE: x-small; =
PADDING-BOTTOM: 0.2em; COLOR: #666; PADDING-TOP: 0.2em
}
.btnSavePrefs {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FONT-WEIGHT: bold
}
.preferences-login {
	CLEAR: both; MARGIN-BOTTOM: 1.5em
}
.prefcache {
	MARGIN-TOP: 2em; FONT-SIZE: 90%
}
DIV#userloginForm FORM {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 2em; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 2em; FLOAT: left; =
PADDING-BOTTOM: 1.5em; MARGIN: 0px 3em 1em 0px; BORDER-LEFT: #aaa 1px =
solid; PADDING-TOP: 1.5em; BORDER-BOTTOM: #aaa 1px solid; =
BACKGROUND-COLOR: #f9f9f9
}
DIV#userlogin FORM#userlogin2 {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 2em; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 2em; FLOAT: left; =
PADDING-BOTTOM: 1.5em; MARGIN: 0px 3em 1em 0px; BORDER-LEFT: #aaa 1px =
solid; PADDING-TOP: 1.5em; BORDER-BOTTOM: #aaa 1px solid; =
BACKGROUND-COLOR: #f9f9f9
}
DIV#userloginForm TABLE {
	BACKGROUND-COLOR: #f9f9f9
}
DIV#userlogin FORM#userlogin2 TABLE {
	BACKGROUND-COLOR: #f9f9f9
}
DIV#userloginForm H2 {
	PADDING-TOP: 0px
}
DIV#userlogin FORM#userlogin2 H2 {
	PADDING-TOP: 0px
}
DIV#userlogin .captcha {
	BORDER-RIGHT: #bbb 1px solid; PADDING-RIGHT: 2em; BORDER-TOP: #bbb 1px =
solid; PADDING-LEFT: 2em; PADDING-BOTTOM: 1.5em; BORDER-LEFT: #bbb 1px =
solid; PADDING-TOP: 1.5em; BORDER-BOTTOM: #bbb 1px solid; =
BACKGROUND-COLOR: white
}
DIV#userloginForm .captcha {
	BORDER-RIGHT: #bbb 1px solid; PADDING-RIGHT: 2em; BORDER-TOP: #bbb 1px =
solid; PADDING-LEFT: 2em; PADDING-BOTTOM: 1.5em; BORDER-LEFT: #bbb 1px =
solid; PADDING-TOP: 1.5em; BORDER-BOTTOM: #bbb 1px solid; =
BACKGROUND-COLOR: white
}
#userloginprompt {
	FONT-SIZE: 85%
}
#languagelinks {
	FONT-SIZE: 85%
}
#login-sectiontip {
	FONT-SIZE: 85%; LINE-HEIGHT: 1.2; PADDING-TOP: 2em
}
#userlogin .loginText {
	WIDTH: 12em
}
#userlogin .loginPassword {
	WIDTH: 12em
}
#userloginlink A {
	FONT-WEIGHT: bold
}
#wpLoginattempt {
	FONT-WEIGHT: bold
}
#wpCreateaccount {
	FONT-WEIGHT: bold
}
* > HTML #p-cactions LI {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
* > HTML #p-cactions LI A {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px
}
* > HTML #p-cactions LI.selected A {
	BORDER-LEFT-COLOR: #fabd23; BORDER-BOTTOM-COLOR: #fabd23; =
BORDER-TOP-COLOR: #fabd23; BORDER-RIGHT-COLOR: #fabd23
}
* > HTML #f-poweredbyico {
	WIDTH: 88px
}
* > HTML #f-copyrightico {
	WIDTH: 88px
}
* > HTML #bodyContent {
	OVERFLOW-X: auto; PADDING-BOTTOM: 25px; WIDTH: 100%
}
* > HTML #bodyContent PRE {
	OVERFLOW-X: auto; PADDING-BOTTOM: 25px; WIDTH: 100%
}
* HTML #footer {
	MARGIN-TOP: 0px
}
* HTML #column-content {
	DISPLAY: inline; MARGIN-BOTTOM: 0px
}
* HTML DIV.editsection {
	FONT-SIZE: smaller
}
#pagehistory LI.selected {
	POSITION: relative
}
* > HTML #column-content {
	FLOAT: none
}
* > HTML #column-one {
	LEFT: 0px; POSITION: absolute; TOP: 0px
}
* > HTML #footer {
	MARGIN-LEFT: 13.2em
}
.redirectText {
	FONT-SIZE: 150%; MARGIN: 5px
}
.printfooter {
	DISPLAY: none
}
.not-patrolled {
	BACKGROUND-COLOR: #ffa
}
DIV.patrollink {
	CLEAR: both; FONT-SIZE: 75%; TEXT-ALIGN: right
}
SPAN.newpage {
	FONT-WEIGHT: bold
}
SPAN.minor {
	FONT-WEIGHT: bold
}
SPAN.bot {
	FONT-WEIGHT: bold
}
SPAN.unpatrolled {
	FONT-WEIGHT: bold; COLOR: red
}
.sharedUploadNotice {
	FONT-STYLE: italic
}
SPAN.updatedmarker {
	COLOR: black; BACKGROUND-COLOR: #0f0
}
TABLE.gallery {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: =
#ccc 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #ccc 1px solid; =
BACKGROUND-COLOR: white
}
TABLE.gallery TR {
	VERTICAL-ALIGN: top
}
TABLE.gallery TD {
	BORDER-RIGHT: white 2px solid; BORDER-TOP: white 2px solid; =
VERTICAL-ALIGN: top; BORDER-LEFT: white 2px solid; BORDER-BOTTOM: white =
2px solid; BACKGROUND-COLOR: #f9f9f9
}
TABLE.gallery TD.galleryheader {
	FONT-WEIGHT: bold; TEXT-ALIGN: center
}
TABLE.gallery CAPTION {
	FONT-WEIGHT: bold
}
DIV.gallerybox {
	MARGIN: 2px
}
DIV.gallerybox DIV.thumb {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN: 2px; =
BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: =
center
}
DIV.gallerytext {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 94%; PADDING-BOTTOM: =
2px; OVERFLOW: hidden; PADDING-TOP: 2px
}
SPAN.comment {
	FONT-STYLE: italic
}
SPAN.changedby {
	FONT-SIZE: 95%
}
.previewnote {
	MARGIN-BOTTOM: 1em; PADDING-BOTTOM: 1em; COLOR: #c00; TEXT-INDENT: 3em; =
BORDER-BOTTOM: #aaa 1px solid
}
.previewnote P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.editExternally {
	BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: gray 1px =
solid; MARGIN-TOP: 0.5em; PADDING-LEFT: 3px; FONT-SIZE: small; FLOAT: =
left; PADDING-BOTTOM: 3px; BORDER-LEFT: gray 1px solid; PADDING-TOP: =
3px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #ffffff; =
TEXT-ALIGN: center
}
.editExternallyHelp {
	COLOR: gray; FONT-STYLE: italic
}
.toggle {
	MARGIN-LEFT: 2em; TEXT-INDENT: -2em
}
TABLE.mw_metadata {
	FONT-SIZE: 0.8em; MARGIN-BOTTOM: 0.5em; MARGIN-LEFT: 0.5em; WIDTH: =
300px
}
TABLE.mw_metadata CAPTION {
	FONT-WEIGHT: bold
}
TABLE.mw_metadata TH {
	FONT-WEIGHT: normal
}
TABLE.mw_metadata TD {
	PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; PADDING-BOTTOM: 0.1em; =
PADDING-TOP: 0.1em
}
TABLE.mw_metadata {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none
}
TABLE.mw_metadata TD {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 0.1em; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 0.1em; BORDER-LEFT: #aaaaaa 1px solid; =
BORDER-BOTTOM: #aaaaaa 1px solid; TEXT-ALIGN: center
}
TABLE.mw_metadata TH {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 0.1em; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 0.1em; BORDER-LEFT: #aaaaaa 1px solid; =
BORDER-BOTTOM: #aaaaaa 1px solid; TEXT-ALIGN: center
}
TABLE.mw_metadata TH {
	BACKGROUND-COLOR: #f9f9f9
}
TABLE.mw_metadata TD {
	BACKGROUND-COLOR: #fcfcfc
}
TABLE.collapsed TR.collapsable {
	DISPLAY: none
}
UL#filetoc {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; MARGIN-BOTTOM: =
0.5em; PADDING-BOTTOM: 5px; MARGIN-LEFT: 0px; BORDER-LEFT: #aaaaaa 1px =
solid; MARGIN-RIGHT: 0px; PADDING-TOP: 5px; BORDER-BOTTOM: #aaaaaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9; TEXT-ALIGN: center
}
#filetoc LI {
	PADDING-RIGHT: 2em; DISPLAY: inline; LIST-STYLE-TYPE: none
}
INPUT#wpSummary {
	WIDTH: 80%
}
INPUT#wpSave {
	MARGIN-RIGHT: 0.33em
}
INPUT#wpDiff {
	MARGIN-RIGHT: 0.33em
}
#editform .editOptions {
	DISPLAY: inline
}
#wpSave {
	FONT-WEIGHT: bold
}
TABLE.revisionform_default {
	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; =
BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid
}
TABLE.revisionform_focus {
	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; =
BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; =
BACKGROUND-COLOR: #00bbff
}
TR.revision_tr_default {
	BACKGROUND-COLOR: #eeeeee
}
TR.revision_tr_first {
	BACKGROUND-COLOR: #dddddd
}
P.revision_saved {
	FONT-WEIGHT: bold; COLOR: green
}
#mw_trackbacks {
	BORDER-RIGHT: #bbbbff 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: =
#bbbbff 1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; =
BORDER-LEFT: #bbbbff 1px solid; PADDING-TOP: 0.2em; BORDER-BOTTOM: =
#bbbbff 1px solid; BACKGROUND-COLOR: #eeeeff
}
#allmessagestable TH {
	BACKGROUND-COLOR: #b2b2ff
}
#allmessagestable TR.orig {
	BACKGROUND-COLOR: #ffe2e2
}
#allmessagestable TR.new {
	BACKGROUND-COLOR: #e2ffe2
}
#allmessagestable TR.def {
	BACKGROUND-COLOR: #f0f0ff
}
DIV.noarticletext {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 1em; BACKGROUND: #fff; PADDING-BOTTOM: 0.2em; =
BORDER-LEFT: #ccc 1px solid; COLOR: #000; PADDING-TOP: 0.2em; =
BORDER-BOTTOM: #ccc 1px solid
}
DIV#searchTargetContainer {
	BACKGROUND: white; LEFT: 10px; WIDTH: 90%; TOP: 10px
}
DIV#searchTarget {
	BORDER-RIGHT: blue 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: blue 1px =
solid; PADDING-LEFT: 3px; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 3px; =
MARGIN: 5px; BORDER-LEFT: blue 1px solid; PADDING-TOP: 3px; =
BORDER-BOTTOM: blue 1px solid
}
DIV#searchTarget UL LI {
	LIST-STYLE-TYPE: none
}
DIV#searchTarget UL LI:unknown {
	COLOR: orange; content: "=BB "
}
DIV#searchTargetHide {
	BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: black =
1px solid; PADDING-LEFT: 2px; BACKGROUND: #dcdcdc; FLOAT: right; =
PADDING-BOTTOM: 2px; BORDER-LEFT: black 1px solid; PADDING-TOP: 2px; =
BORDER-BOTTOM: black 1px solid
}
DIV.multipageimagenavbox {
	BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: silver =
1px solid; PADDING-LEFT: 4px; BACKGROUND: #f0f0f0; PADDING-BOTTOM: 4px; =
MARGIN: 1em; BORDER-LEFT: silver 1px solid; PADDING-TOP: 4px; =
BORDER-BOTTOM: silver 1px solid; -moz-border-radius: 6px
}
DIV.multipageimagenavbox DIV.thumb {
	MARGIN-LEFT: 2em; BORDER-TOP-STYLE: none; MARGIN-RIGHT: 2em; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
DIV.multipageimagenavbox HR {
	MARGIN: 6px
}
TABLE.multipageimage TD {
	TEXT-ALIGN: center
}
TABLE#sv-ext {
	PADDING-RIGHT: 0em; PADDING-LEFT: 0em; PADDING-BOTTOM: 0em; MARGIN: =
1em; PADDING-TOP: 0em
}
TABLE#sv-hooks {
	PADDING-RIGHT: 0em; PADDING-LEFT: 0em; PADDING-BOTTOM: 0em; MARGIN: =
1em; PADDING-TOP: 0em
}
TABLE#sv-software {
	PADDING-RIGHT: 0em; PADDING-LEFT: 0em; PADDING-BOTTOM: 0em; MARGIN: =
1em; PADDING-TOP: 0em
}
#sv-ext TD {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-hooks TD {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-software TD {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-ext TH {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-hooks TH {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-software TH {
	BORDER-RIGHT: #a0a0a0 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#a0a0a0 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #a0a0a0 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #a0a0a0 =
1px solid
}
#sv-ext TH {
	PADDING-RIGHT: 0.15em; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
COLOR: black; PADDING-TOP: 0px; BACKGROUND-COLOR: #f0f0f0
}
#sv-hooks TH {
	PADDING-RIGHT: 0.15em; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
COLOR: black; PADDING-TOP: 0px; BACKGROUND-COLOR: #f0f0f0
}
#sv-software TH {
	PADDING-RIGHT: 0.15em; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
COLOR: black; PADDING-TOP: 0px; BACKGROUND-COLOR: #f0f0f0
}
TR.sv-space {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; HEIGHT: 0.8em; BORDER-BOTTOM-STYLE: none
}
TR.sv-space TD {
	DISPLAY: none
}
.TablePager_nav A {
	TEXT-DECORATION: none
}
.TablePager {
	BORDER-COLLAPSE: collapse
}
.TablePager {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #aaaaaa 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #aaaaaa =
1px solid
}
.TablePager TD {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #aaaaaa 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #aaaaaa =
1px solid
}
.TablePager TH {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 0.15em; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 0.15em; PADDING-BOTTOM: 0px; =
BORDER-LEFT: #aaaaaa 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #aaaaaa =
1px solid
}
.TablePager TH {
	BACKGROUND-COLOR: #eeeeff
}
.TablePager TD {
	BACKGROUND-COLOR: #ffffff
}
.TablePager TR:hover TD {
	BACKGROUND-COLOR: #eeeeff
}
.imagelist TD {
	WHITE-SPACE: nowrap
}
.imagelist TH {
	WHITE-SPACE: nowrap
}
.imagelist .TablePager_col_links {
	BACKGROUND-COLOR: #eeeeff
}
.imagelist .TablePager_col_img_description {
	WHITE-SPACE: normal
}
.imagelist TH.TablePager_sort {
	BACKGROUND-COLOR: #ccccff
}
.templatesUsed {
	MARGIN-TOP: 1.5em
}
.mw-summary-preview {
	MARGIN: 0.1em 0px
}
DIV.mw-lag-warn-normal {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px =
auto; PADDING-TOP: 3px; TEXT-ALIGN: center
}
DIV.mw-lag-warn-high {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px =
auto; PADDING-TOP: 3px; TEXT-ALIGN: center
}
DIV.mw-lag-warn-normal {
	BORDER-RIGHT: #ffcc66 1px solid; BORDER-TOP: #ffcc66 1px solid; =
BORDER-LEFT: #ffcc66 1px solid; BORDER-BOTTOM: #ffcc66 1px solid; =
BACKGROUND-COLOR: #ffffcc
}
DIV.mw-lag-warn-high {
	BORDER-RIGHT: #ff0033 2px solid; BORDER-TOP: #ff0033 2px solid; =
FONT-WEIGHT: bold; BORDER-LEFT: #ff0033 2px solid; BORDER-BOTTOM: =
#ff0033 2px solid; BACKGROUND-COLOR: #ffcccc
}
DIV#mw-upload-deleted-warn {
	BORDER-RIGHT: #2f6fab 2px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#2f6fab 2px solid; PADDING-LEFT: 3px; MARGIN-BOTTOM: 3px; =
PADDING-BOTTOM: 3px; BORDER-LEFT: #2f6fab 2px solid; PADDING-TOP: 3px; =
BORDER-BOTTOM: #2f6fab 2px solid
}
DIV#mw-recreate-deleted-warn {
	BORDER-RIGHT: #2f6fab 2px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#2f6fab 2px solid; PADDING-LEFT: 3px; MARGIN-BOTTOM: 3px; =
PADDING-BOTTOM: 3px; BORDER-LEFT: #2f6fab 2px solid; PADDING-TOP: 3px; =
BORDER-BOTTOM: #2f6fab 2px solid
}
DIV#mw-upload-deleted-warn UL LI {
	FONT-SIZE: 90%
}
DIV#mw-recreate-deleted-warn UL LI {
	FONT-SIZE: 90%
}
.MediaTransformError {
	PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; PADDING-BOTTOM: 0.1em; =
PADDING-TOP: 0.1em; BACKGROUND-COLOR: #ccc
}
.MediaTransformError TD {
	FONT-SIZE: 90%; VERTICAL-ALIGN: middle; TEXT-ALIGN: center
}
DIV#mw-search-interwiki-caption {
	FONT-WEIGHT: bold; FONT-SIZE: 95%; TEXT-ALIGN: center
}
.mw-search-interwiki-project {
	PADDING-RIGHT: 0.15em; PADDING-LEFT: 0.2em; FONT-SIZE: 97%; BACKGROUND: =
#cae8ff; PADDING-BOTTOM: 0.2em; PADDING-TOP: 0.15em; TEXT-ALIGN: left
}
SPAN.searchmatch {
	FONT-WEIGHT: bold; COLOR: red
}
.os-suggest {
	FONT-SIZE: 127%
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/common/commonPrint.css?141

A.stub {
	COLOR: #ba0000; TEXT-DECORATION: none
}
A.new {
	COLOR: #ba0000; TEXT-DECORATION: none
}
#toc {
	BORDER-RIGHT: #aaaaaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#aaaaaa 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: =
#aaaaaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaaaaa 1px solid; =
BACKGROUND-COLOR: #f9f9f9
}
.tocindent {
	MARGIN-LEFT: 2em
}
.tocline {
	MARGIN-BOTTOM: 0px
}
DIV.floatright {
	CLEAR: right; BORDER-RIGHT: white 0px solid; BORDER-TOP: white 0.5em =
solid; FLOAT: right; MARGIN: 0px; BORDER-LEFT: white 1.4em solid; =
BORDER-BOTTOM: white 0.8em solid; POSITION: relative
}
DIV.floatright P {
	FONT-STYLE: italic
}
DIV.floatleft {
	BORDER-RIGHT: white 1.4em solid; BORDER-TOP: white 0.5em solid; FLOAT: =
left; MARGIN: 0.3em 0.5em 0.5em 0px; BORDER-LEFT: white 0px solid; =
BORDER-BOTTOM: white 0.8em solid; POSITION: relative
}
DIV.floatleft P {
	FONT-STYLE: italic
}
DIV.thumb {
	BORDER-LEFT-COLOR: white; MARGIN-BOTTOM: 0.5em; BORDER-BOTTOM-COLOR: =
white; OVERFLOW: hidden; WIDTH: auto; BORDER-TOP-STYLE: solid; =
BORDER-TOP-COLOR: white; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: =
solid; BORDER-RIGHT-COLOR: white; BORDER-BOTTOM-STYLE: solid
}
DIV.thumb DIV {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 3px! important; =
BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 3px! important; FONT-SIZE: =
94%; PADDING-BOTTOM: 3px! important; BORDER-LEFT: #cccccc 1px solid; =
PADDING-TOP: 3px! important; BORDER-BOTTOM: #cccccc 1px solid; =
BACKGROUND-COLOR: #f9f9f9; TEXT-ALIGN: center
}
DIV.thumb DIV A IMG {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; =
BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid
}
DIV.thumb DIV DIV.thumbcaption {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.1em; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0.3em; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
DIV.magnify {
	DISPLAY: none
}
DIV.tright {
	BORDER-TOP-WIDTH: 0.5em; CLEAR: right; BORDER-LEFT-WIDTH: 1.4em; FLOAT: =
right; BORDER-BOTTOM-WIDTH: 0.8em; BORDER-RIGHT-WIDTH: 0px
}
DIV.tleft {
	BORDER-TOP-WIDTH: 0.5em; BORDER-LEFT-WIDTH: 0px; FLOAT: left; =
BORDER-BOTTOM-WIDTH: 0.8em; MARGIN-RIGHT: 0.5em; BORDER-RIGHT-WIDTH: =
1.4em
}
IMG.thumbborder {
	BORDER-RIGHT: #dddddd 1px solid; BORDER-TOP: #dddddd 1px solid; =
BORDER-LEFT: #dddddd 1px solid; BORDER-BOTTOM: #dddddd 1px solid
}
TABLE.rimage {
	FLOAT: right; MARGIN-BOTTOM: 1em; MARGIN-LEFT: 1em; WIDTH: 1pt; =
POSITION: relative; TEXT-ALIGN: center
}
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: white; =
PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: black; PADDING-TOP: 0px
}
.noprint {
	DISPLAY: none
}
DIV#jump-to-nav {
	DISPLAY: none
}
DIV.top {
	DISPLAY: none
}
DIV#column-one {
	DISPLAY: none
}
#colophon {
	DISPLAY: none
}
.editsection {
	DISPLAY: none
}
.toctoggle {
	DISPLAY: none
}
.tochidden {
	DISPLAY: none
}
DIV#f-poweredbyico {
	DISPLAY: none
}
DIV#f-copyrightico {
	DISPLAY: none
}
LI#viewcount {
	DISPLAY: none
}
LI#about {
	DISPLAY: none
}
LI#disclaimer {
	DISPLAY: none
}
LI#privacy {
	DISPLAY: none
}
UL {
	LIST-STYLE-TYPE: square
}
#content {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px! =
important; MARGIN: 0px; BORDER-TOP-STYLE: none! important; PADDING-TOP: =
0px! important; BORDER-RIGHT-STYLE: none! important; BORDER-LEFT-STYLE: =
none! important; BORDER-BOTTOM-STYLE: none! important
}
#footer {
	BORDER-TOP: black 1px solid; BACKGROUND: white; COLOR: black
}
H1 {
	FONT-WEIGHT: bold
}
H2 {
	FONT-WEIGHT: bold
}
H3 {
	FONT-WEIGHT: bold
}
H4 {
	FONT-WEIGHT: bold
}
H5 {
	FONT-WEIGHT: bold
}
H6 {
	FONT-WEIGHT: bold
}
P {
	MARGIN: 1em 0px; LINE-HEIGHT: 1.2em
}
.documentDescription {
	MARGIN: 1em 0px; LINE-HEIGHT: 1.2em
}
.tocindent P {
	MARGIN: 0px
}
PRE {
	BORDER-RIGHT: black 1pt dashed; PADDING-RIGHT: 0px; BORDER-TOP: black =
1pt dashed; PADDING-LEFT: 0px; FONT-SIZE: 8pt; BACKGROUND: white; =
PADDING-BOTTOM: 1em; OVERFLOW: auto; BORDER-LEFT: black 1pt dashed; =
COLOR: black; PADDING-TOP: 1em; BORDER-BOTTOM: black 1pt dashed; =
WHITE-SPACE: pre
}
TABLE.listing {
	BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; =
BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; =
BORDER-COLLAPSE: collapse
}
TABLE.listing TD {
	BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; =
BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid; =
BORDER-COLLAPSE: collapse
}
A {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px! =
important; COLOR: black! important; PADDING-TOP: 0px! important
}
A:link {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #520; =
TEXT-DECORATION: underline
}
A:visited {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #520; =
TEXT-DECORATION: underline
}
#content A.text.external:unknown {
	content: " (" attr(href) ") "
}
#content A.autonumber.external:unknown {
	content: " (" attr(href) ") "
}
#globalWrapper {
	MIN-WIDTH: 0px! important; WIDTH: 100%! important
}
#content {
	BACKGROUND: white; COLOR: black
}
#column-content {
	MARGIN: 0px
}
#column-content #content {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; PADDING-BOTTOM: 1em; MARGIN: =
0px; PADDING-TOP: 1em
}
A {
	COLOR: black! important; TEXT-DECORATION: none! important
}
A.external {
	COLOR: black! important; TEXT-DECORATION: none! important
}
A.new {
	COLOR: black! important; TEXT-DECORATION: none! important
}
A.stub {
	COLOR: black! important; TEXT-DECORATION: none! important
}
A {
=09
}
A.external {
=09
}
A.new {
=09
}
A.stub {
=09
}
IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
IMG.tex {
	VERTICAL-ALIGN: middle
}
SPAN.texhtml {
	FONT-FAMILY: serif
}
DIV.townBox {
	CLEAR: right; BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 0.3em; =
BORDER-TOP: gray 1px solid; PADDING-LEFT: 0.3em; BACKGROUND: white; =
FLOAT: right; PADDING-BOTTOM: 0.3em; MARGIN-LEFT: 1em; OVERFLOW: hidden; =
BORDER-LEFT: gray 1px solid; WIDTH: 200px; PADDING-TOP: 0.3em; =
BORDER-BOTTOM: gray 1px solid; POSITION: relative
}
DIV.townBox DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 96%; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0.3em; PADDING-TOP: 0px
}
DIV.townBox DL DT {
	BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0.4em 0px 0px
}
DIV.townBox DL DD {
	MARGIN: 0.1em 0px 0px 1.1em; BACKGROUND-COLOR: #f3f3f3
}
#siteNotice {
	DISPLAY: none
}
TABLE.gallery {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 2px; =
BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #cccccc =
1px solid; BACKGROUND-COLOR: #ffffff
}
TABLE.gallery TR {
	VERTICAL-ALIGN: top
}
DIV.gallerybox {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; MARGIN: =
2px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 150px; BORDER-BOTTOM: =
#cccccc 1px solid; BACKGROUND-COLOR: #f9f9f9
}
DIV.gallerybox DIV.thumb {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; MARGIN: =
2px; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid; =
TEXT-ALIGN: center
}
DIV.gallerytext {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 94%; PADDING-BOTTOM: =
2px; PADDING-TOP: 2px
}
TABLE.diff {
	BACKGROUND: white
}
TD.diff-otitle {
	BACKGROUND: #ffffff
}
TD.diff-ntitle {
	BACKGROUND: #ffffff
}
TD.diff-addedline {
	BORDER-RIGHT: black 2px solid; BORDER-TOP: black 2px solid; FONT-SIZE: =
smaller; BACKGROUND: #ccffcc; BORDER-LEFT: black 2px solid; =
BORDER-BOTTOM: black 2px solid
}
TD.diff-deletedline {
	BORDER-RIGHT: black 2px dotted; BORDER-TOP: black 2px dotted; =
FONT-SIZE: smaller; BACKGROUND: #ffffaa; BORDER-LEFT: black 2px dotted; =
BORDER-BOTTOM: black 2px dotted
}
TD.diff-context {
	FONT-SIZE: smaller; BACKGROUND: #eeeeee
}
.diffchange {
	FONT-WEIGHT: bold; COLOR: silver; TEXT-DECORATION: underline
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/monobook/IE70Fixes.css?141

#column-content #content {
	MARGIN-TOP: 3em; MARGIN-LEFT: 12.2em; HEIGHT: 1%
}
.rtl #column-one {
	MARGIN-TOP: 160px; PADDING-TOP: 0px
}
#p-cactions {
	Z-INDEX: 3
}
#p-cactions LI {
	FLOAT: none! important; PADDING-BOTTOM: 0px! important; CURSOR: =
default; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
#p-cactions LI A {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; DISPLAY: =
inline-block! important; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: top; =
BORDER-LEFT: #aaa 1px solid; BORDER-BOTTOM: #aaa 0px solid
}
#p-cactions LI.selected A {
	BORDER-LEFT-COLOR: #fabd23; BORDER-BOTTOM-COLOR: #fabd23; =
PADDING-BOTTOM: 0.17em; BORDER-TOP-COLOR: #fabd23; BORDER-RIGHT-COLOR: =
#fabd23
}
#p-cactions LI A:hover {
	PADDING-BOTTOM: 0.17em
}
#p-navigation A {
	DISPLAY: inline-block; WIDTH: 100%
}
#portal-personaltools {
	PADDING-BOTTOM: 0.1em
}
TEXTAREA {
	WIDTH: 96%
}
#footer LI {
	MARGIN-RIGHT: 0px
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400

#interwiki-completelist {
	FONT-WEIGHT: bold
}
BODY.page-Main_Page #ca-delete {
	DISPLAY: none! important
}
#toolbar {
	MARGIN-BOTTOM: 6px
}
OL.references {
	FONT-SIZE: 100%
}
.references-small {
	FONT-SIZE: 90%
}
.references-2column {
	FONT-SIZE: 90%; -moz-column-count: 2; -webkit-column-count: 2; =
column-count: 2
}
.same-bg {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
OL.references > LI:unknown {
	BACKGROUND-COLOR: #def
}
SUP.reference:unknown {
	BACKGROUND-COLOR: #def
}
CITE {
	FONT-STYLE: normal; WORD-WRAP: break-word
}
CITE:unknown {
	BACKGROUND-COLOR: #def
}

@media Print   =20
{
#content CITE A.text.external:unknown {
	DISPLAY: none
}

}

@media Screen, Handheld, Projection   =20
{
CITE *.printonly {
	DISPLAY: none
}
    }
TABLE.wikitable {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BACKGROUND: =
#f9f9f9; MARGIN: 1em 1em 1em 0px; BORDER-LEFT: #aaa 1px solid; =
BORDER-BOTTOM: #aaa 1px solid; BORDER-COLLAPSE: collapse
}
TABLE.prettytable {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BACKGROUND: =
#f9f9f9; MARGIN: 1em 1em 1em 0px; BORDER-LEFT: #aaa 1px solid; =
BORDER-BOTTOM: #aaa 1px solid; BORDER-COLLAPSE: collapse
}
TABLE.wikitable TH {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; BORDER-LEFT: #aaa =
1px solid; PADDING-TOP: 0.2em; BORDER-BOTTOM: #aaa 1px solid
}
TABLE.wikitable TD {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; BORDER-LEFT: #aaa =
1px solid; PADDING-TOP: 0.2em; BORDER-BOTTOM: #aaa 1px solid
}
TABLE.prettytable TH {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; BORDER-LEFT: #aaa =
1px solid; PADDING-TOP: 0.2em; BORDER-BOTTOM: #aaa 1px solid
}
TABLE.prettytable TD {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; BORDER-LEFT: #aaa =
1px solid; PADDING-TOP: 0.2em; BORDER-BOTTOM: #aaa 1px solid
}
TABLE.wikitable TH {
	BACKGROUND: #f2f2f2; TEXT-ALIGN: center
}
TABLE.prettytable TH {
	BACKGROUND: #f2f2f2; TEXT-ALIGN: center
}
TABLE.wikitable CAPTION {
	FONT-WEIGHT: bold
}
TABLE.prettytable CAPTION {
	FONT-WEIGHT: bold
}
TABLE.prettytable CODE {
	BACKGROUND-COLOR: transparent
}
TABLE.wikitable CODE {
	BACKGROUND-COLOR: transparent
}
TABLE.navbox {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 1px; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 1px; FONT-SIZE: 88%; =
PADDING-BOTTOM: 1px; MARGIN: auto; BORDER-LEFT: #aaa 1px solid; WIDTH: =
100%; PADDING-TOP: 1px; BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: =
center
}
TABLE.navbox + TABLE.navbox {
	MARGIN-TOP: -1px
}
.navbox-title {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; TEXT-ALIGN: center
}
.navbox-abovebelow {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; TEXT-ALIGN: center
}
TABLE.navbox TH {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; TEXT-ALIGN: center
}
.navbox-group {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; FONT-WEIGHT: bold; WHITE-SPACE: =
nowrap; TEXT-ALIGN: right
}
.navbox {
	BACKGROUND: #fdfdfd
}
.navbox-subgroup {
	BACKGROUND: #fdfdfd
}
.navbox-list {
	BORDER-LEFT-COLOR: #fdfdfd; BORDER-BOTTOM-COLOR: #fdfdfd; =
BORDER-TOP-COLOR: #fdfdfd; BORDER-RIGHT-COLOR: #fdfdfd
}
.navbox-title {
	BACKGROUND: #ccccff
}
TABLE.navbox TH {
	BACKGROUND: #ccccff
}
.navbox-abovebelow {
	BACKGROUND: #ddddff
}
.navbox-group {
	BACKGROUND: #ddddff
}
.navbox-subgroup .navbox-title {
	BACKGROUND: #ddddff
}
.navbox-subgroup .navbox-group {
	BACKGROUND: #e6e6ff
}
.navbox-subgroup .navbox-abovebelow {
	BACKGROUND: #e6e6ff
}
.navbox-even {
	BACKGROUND: #f7f7f7
}
.navbox-odd {
	BACKGROUND: none transparent scroll repeat 0% 0%
}

@media Print   =20
{
.navbox {
	DISPLAY: none
}
    }
.infobox {
	CLEAR: right; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 0.2em; FLOAT: right; =
PADDING-BOTTOM: 0.2em; MARGIN: 0.5em 0px 0.5em 1em; BORDER-LEFT: #aaa =
1px solid; COLOR: black; PADDING-TOP: 0.2em; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
.infobox TD {
	VERTICAL-ALIGN: top
}
.infobox TH {
	VERTICAL-ALIGN: top
}
.infobox CAPTION {
	FONT-SIZE: larger
}
.bordered.infobox {
	BORDER-COLLAPSE: collapse
}
.bordered.infobox TD {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
.bordered.infobox TH {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
.bordered.infobox .borderless TD {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
.bordered.infobox .borderless TH {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
.sisterproject.infobox {
	FONT-SIZE: 90%; WIDTH: 20em
}

@media Print   =20
{
.sisterproject.infobox {
	DISPLAY: none
}
    }
.standard-talk.infobox {
	BORDER-RIGHT: #c0c090 1px solid; BORDER-TOP: #c0c090 1px solid; =
BORDER-LEFT: #c0c090 1px solid; BORDER-BOTTOM: #c0c090 1px solid; =
BACKGROUND-COLOR: #f8eaba
}
.bordered.infobox .mergedtoprow TD {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px
}
.bordered.infobox .mergedtoprow TH {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px
}
.bordered.infobox .mergedrow TD {
	BORDER-TOP-WIDTH: 0px; BORDER-RIGHT: #aaa 1px solid; BORDER-LEFT-WIDTH: =
0px; BORDER-BOTTOM-WIDTH: 0px
}
.bordered.infobox .mergedrow TH {
	BORDER-TOP-WIDTH: 0px; BORDER-RIGHT: #aaa 1px solid; BORDER-LEFT-WIDTH: =
0px; BORDER-BOTTOM-WIDTH: 0px
}
.geography.infobox {
	FONT-SIZE: 90%; LINE-HEIGHT: 1.2em; BORDER-COLLAPSE: collapse; =
TEXT-ALIGN: left
}
.geography.infobox TD {
	PADDING-RIGHT: 0.6em; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.4em; PADDING-TOP: 0.4em
}
.geography.infobox TH {
	PADDING-RIGHT: 0.6em; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.4em; PADDING-TOP: 0.4em
}
.geography.infobox .mergedtoprow TD {
	PADDING-RIGHT: 0.6em; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.2em; PADDING-TOP: 0.4em
}
.geography.infobox .mergedtoprow TH {
	PADDING-RIGHT: 0.6em; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.2em; PADDING-TOP: 0.4em
}
.geography.infobox .mergedrow TD {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0.6em; PADDING-LEFT: 0.6em; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0.2em; =
PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
.geography.infobox .mergedrow TH {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0.6em; PADDING-LEFT: 0.6em; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0.2em; =
PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
.geography.infobox .mergedbottomrow TD {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0.6em; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.4em; PADDING-TOP: 0px; BORDER-BOTTOM: #aaa 1px solid
}
.geography.infobox .mergedbottomrow TH {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0.6em; PADDING-LEFT: 0.6em; =
PADDING-BOTTOM: 0.4em; PADDING-TOP: 0px; BORDER-BOTTOM: #aaa 1px solid
}
.geography.infobox .maptable TD {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
.geography.infobox .maptable TH {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
.notice {
	PADDING-RIGHT: 0.2em; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; =
MARGIN: 1em; PADDING-TOP: 0.2em
}
#disambig {
	BORDER-TOP: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
.spoiler {
	BORDER-TOP: #ddd 2px solid; BORDER-BOTTOM: #ddd 2px solid
}
.Talk-Notice {
	BORDER-RIGHT: #c0c090 1px solid; BORDER-TOP: #c0c090 1px solid; =
MARGIN-BOTTOM: 3px; MARGIN-LEFT: auto; BORDER-LEFT: #c0c090 1px solid; =
WIDTH: 85%; MARGIN-RIGHT: auto; BORDER-BOTTOM: #c0c090 1px solid; =
BACKGROUND-COLOR: #f8eaba; border-spacing: 3px
}
.Talk-Notice:unknown {
	content: "The CSS for this template should be changed. See =
[[Wikipedia:Template Standardisation]]."
}
.Talk-Notice TD {
=09
}
TABLE.InChI {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; DISPLAY: =
none; BORDER-LEFT: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid; speak: =
none
}
TABLE.persondata {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; DISPLAY: =
none; BORDER-LEFT: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid; speak: =
none
}
.InChI-label {
	COLOR: #aaa
}
.persondata-label {
	COLOR: #aaa
}
.redirect-in-category {
	FONT-STYLE: italic
}
.allpagesredirect {
	FONT-STYLE: italic
}
.audiolink A {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 16px! important; =
BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Loudspeaker.=
svg/11px-Loudspeaker.svg.png) no-repeat left center
}
DIV.listenlist {
	PADDING-LEFT: 40px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Gnome-speake=
rnotes.png/30px-Gnome-speakernotes.png)
}
DIV.videolist {
	PADDING-LEFT: 50px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/en/thumb/2/20/Tango-video-x-gen=
eric.png/40px-Tango-video-x-generic.png)
}
DIV.multivideolist {
	PADDING-LEFT: 50px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/en/thumb/2/20/Tango-video-x-gen=
eric.png/40px-Tango-video-x-generic.png)
}
DIV.medialist {
	BACKGROUND-POSITION: left top; MIN-HEIGHT: 50px; MARGIN: 1em; =
BACKGROUND-REPEAT: no-repeat
}
DIV.medialist UL {
	LIST-STYLE-IMAGE: none; MARGIN: 0px; LIST-STYLE-TYPE: none
}
DIV.medialist UL LI {
	PADDING-BOTTOM: 0.5em
}
DIV.medialist UL LI LI {
	FONT-SIZE: 91%; PADDING-BOTTOM: 0px
}
#bodyContent A[href$=3D'.pdf'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#bodyContent A[href*=3D'.pdf?'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#bodyContent A[href*=3D'.pdf#'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#bodyContent A[href$=3D'.PDF'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#bodyContent A[href*=3D'.PDF?'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#bodyContent A[href*=3D'.PDF#'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href$=3D'.pdf'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href*=3D'.pdf?'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href*=3D'.pdf#'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href$=3D'.PDF'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href*=3D'.PDF?'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
#mw_content A[href*=3D'.PDF#'].external {
	PADDING-RIGHT: 16px; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
SPAN.PDFlink A {
	PADDING-RIGHT: 17px! important; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Icons-mini-f=
ile_acrobat.gif/15px-Icons-mini-file_acrobat.gif) no-repeat right center
}
SPAN.geolink A {
	PADDING-RIGHT: 11px! important; BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/en/a/a7/Monobook-globe.png) =
no-repeat right center
}
DIV.columns-2 DIV.column {
	MIN-WIDTH: 300px; FLOAT: left; WIDTH: 50%
}
DIV.columns-3 DIV.column {
	MIN-WIDTH: 200px; FLOAT: left; WIDTH: 33.3%
}
DIV.columns-4 DIV.column {
	MIN-WIDTH: 150px; FLOAT: left; WIDTH: 25%
}
DIV.columns-5 DIV.column {
	MIN-WIDTH: 120px; FLOAT: left; WIDTH: 20%
}
.plainlinksneverexpand {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px! =
important; PADDING-TOP: 0px! important
}
.plainlinksneverexpand .urlexpansion {
	DISPLAY: none! important
}
.plainlinksneverexpand A {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px! =
important; PADDING-TOP: 0px! important
}
.plainlinksneverexpand A.text.external:unknown {
	DISPLAY: none! important
}
.plainlinksneverexpand A.autonumber.external:unknown {
	DISPLAY: none! important
}
.messagebox {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 0.2em; BORDER-TOP: #aaa =
1px solid; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.2em; MARGIN: 0px auto =
1em; BORDER-LEFT: #aaa 1px solid; WIDTH: 80%; PADDING-TOP: 0.2em; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f9f9f9
}
.merge.messagebox {
	BORDER-RIGHT: #c0b8cc 1px solid; BORDER-TOP: #c0b8cc 1px solid; =
BORDER-LEFT: #c0b8cc 1px solid; BORDER-BOTTOM: #c0b8cc 1px solid; =
BACKGROUND-COLOR: #f0e5ff; TEXT-ALIGN: center
}
.cleanup.messagebox {
	BORDER-RIGHT: #9f9fff 1px solid; BORDER-TOP: #9f9fff 1px solid; =
BORDER-LEFT: #9f9fff 1px solid; BORDER-BOTTOM: #9f9fff 1px solid; =
BACKGROUND-COLOR: #efefff; TEXT-ALIGN: center
}
.standard-talk.messagebox {
	BORDER-RIGHT: #c0c090 1px solid; BORDER-TOP: #c0c090 1px solid; =
BORDER-LEFT: #c0c090 1px solid; BORDER-BOTTOM: #c0c090 1px solid; =
BACKGROUND-COLOR: #f8eaba
}
.nested-talk.messagebox {
	BORDER-RIGHT: #c0c090 1px solid; BORDER-TOP: #c0c090 1px solid; MARGIN: =
2px 4px; BORDER-LEFT: #c0c090 1px solid; WIDTH: 100%; BORDER-BOTTOM: =
#c0c090 1px solid; BACKGROUND-COLOR: #f8eaba
}
.small.messagebox {
	CLEAR: both; FONT-SIZE: 85%; FLOAT: right; MARGIN: 0px 0px 1em 1em; =
WIDTH: 238px; LINE-HEIGHT: 1.25em
}
.small-talk.messagebox {
	CLEAR: both; FONT-SIZE: 85%; BACKGROUND: #f8eaba; FLOAT: right; MARGIN: =
0px 0px 1em 1em; WIDTH: 238px; LINE-HEIGHT: 1.25em
}
TABLE.ambox {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BACKGROUND: =
#fbfbfb; MARGIN: 0px 10%; BORDER-LEFT: #1e90ff 10px solid; =
BORDER-BOTTOM: #aaa 1px solid; BORDER-COLLAPSE: collapse
}
TABLE.ambox TH.ambox-text {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.25em; =
WIDTH: 100%; PADDING-TOP: 0.25em
}
TABLE.ambox TD.ambox-text {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.25em; =
WIDTH: 100%; PADDING-TOP: 0.25em
}
TABLE.ambox TD.ambox-image {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px; TEXT-ALIGN: center
}
TABLE.ambox TD.ambox-imageright {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px; TEXT-ALIGN: center
}
TABLE.ambox-notice {
	BORDER-LEFT: #1e90ff 10px solid
}
TABLE.ambox-speedy {
	BACKGROUND: #fee; BORDER-LEFT: #b22222 10px solid
}
TABLE.ambox-delete {
	BORDER-LEFT: #b22222 10px solid
}
TABLE.ambox-serious {
	BORDER-LEFT: #b22222 10px solid
}
TABLE.ambox-content {
	BORDER-LEFT: #f28500 10px solid
}
TABLE.ambox-style {
	BORDER-LEFT: #f4c430 10px solid
}
TABLE.ambox-move {
	BORDER-LEFT: #9932cc 10px solid
}
TABLE.ambox-merge {
	BORDER-LEFT: #9932cc 10px solid
}
TABLE.ambox-protection {
	BORDER-LEFT: #bba 10px solid
}
TABLE.ambox-mini.ambox {
	CLEAR: right; FLOAT: right; MARGIN: 0px 0px 0px 1em; WIDTH: 25%
}

@media Print   =20
{
.ambox {
	DISPLAY: none
}
    }
#file IMG {
	BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png)=

}
.IPA {
	FONT-FAMILY: inherit
}
.Unicode {
	FONT-FAMILY: inherit
}
.latinx {
	FONT-FAMILY: inherit
}
.polytonic {
	FONT-FAMILY: inherit
}
.mufi {
	FONT-FAMILY: Alphabetum, Cardo, LeedsUni, Junicode, "TITUS Cyberbit =
Basic", ALPHA-Demo
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
UNKNOWN {
	FONT-FAMILY: inherit
}
#wpSave {
	FONT-WEIGHT: bold
}
.hiddenStructure {
	DISPLAY: inline! important; COLOR: #f00; BACKGROUND-COLOR: #0f0
}
.check-icon A.new {
	DISPLAY: none; speak: none
}
.nounderlines A {
	TEXT-DECORATION: none
}
.IPA A:link {
	TEXT-DECORATION: none
}
.IPA A:visited {
	TEXT-DECORATION: none
}

@media Print   =20
{
#privacy {
	DISPLAY: none
}
#about {
	DISPLAY: none
}
#disclaimer {
	DISPLAY: none
}
    }
#EnWpMpBook {
	BACKGROUND-IMAGE: =
url(http://upload.wikimedia.org/wikipedia/en/7/7e/MP-open-book.png)
}
#EnWpMpSearch {
	BACKGROUND: =
url(http://upload.wikimedia.org/wikipedia/en/a/ae/MP-magnifying-glass.png=
) no-repeat right top
}
#EnWpMpSearchInner {
	FLOAT: right; WIDTH: 20em; TEXT-ALIGN: center
}
#EnWpMpBook2 {
	BACKGROUND-IMAGE: =
url(http://upload.wikimedia.org/wikipedia/commons/8/8e/MP-open-book2.png)=

}
DIV.Boxmerge {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 4px; FONT-SIZE: 95%; PADDING-BOTTOM: 4px; MARGIN: =
0px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #aaa =
1px solid; BORDER-COLLAPSE: collapse; TEXT-ALIGN: center
}
DIV.NavFrame {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 4px; FONT-SIZE: 95%; PADDING-BOTTOM: 4px; MARGIN: =
0px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #aaa =
1px solid; BORDER-COLLAPSE: collapse; TEXT-ALIGN: center
}
DIV.Boxmerge DIV.NavFrame {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DIV.NavFrame + DIV.NavFrame {
=09
}
DIV.NavPic {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FLOAT: left; PADDING-BOTTOM: =
2px; MARGIN: 0px; PADDING-TOP: 2px; BACKGROUND-COLOR: #fff
}
DIV.NavFrame DIV.NavHead {
	FONT-WEIGHT: bold; POSITION: relative; HEIGHT: 1.6em; BACKGROUND-COLOR: =
#ccf
}
DIV.NavFrame P {
	FONT-SIZE: 100%
}
DIV.NavFrame DIV.NavContent {
	FONT-SIZE: 100%
}
DIV.NavFrame DIV.NavContent P {
	FONT-SIZE: 100%
}
DIV.NavEnd {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; LINE-HEIGHT: 1px; PADDING-TOP: 0px
}
A.NavToggle {
	FONT-WEIGHT: normal; FONT-SIZE: smaller; RIGHT: 3px; POSITION: =
absolute; TOP: 0px
}
.mw-plusminus-pos {
	COLOR: #006400
}
.mw-plusminus-neg {
	COLOR: #8b0000
}
.dablink {
	PADDING-LEFT: 2em; FONT-STYLE: italic
}
.dablink I {
	FONT-STYLE: normal
}
.horizontal UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.horizontal LI {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 0.6em; DISPLAY: inline; =
PADDING-LEFT: 0.4em; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.horizontal LI:unknown {
	PADDING-RIGHT: 0px; BORDER-RIGHT-STYLE: none
}
.geo-default {
	DISPLAY: inline
}
.geo-nondefault {
	DISPLAY: none
}
.geo-dms {
	DISPLAY: inline
}
.geo-dec {
	DISPLAY: inline
}
.geo-multi-punct {
	DISPLAY: none
}
.longitude .latitude {
	WHITE-SPACE: nowrap
}
.geo {
=09
}
.nonumtoc .tocnumber {
	DISPLAY: none
}
.nonumtoc #toc UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0.3em 0px 0px; LINE-HEIGHT: 1.5em; PADDING-TOP: 0px; LIST-STYLE-TYPE: =
none
}
.nonumtoc .toc UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0.3em 0px 0px; LINE-HEIGHT: 1.5em; PADDING-TOP: 0px; LIST-STYLE-TYPE: =
none
}
.nonumtoc #toc UL UL {
	MARGIN: 0px 0px 0px 2em
}
.nonumtoc .toc UL UL {
	MARGIN: 0px 0px 0px 2em
}
.toclimit-2 .toclevel-2 {
	DISPLAY: none
}
.toclimit-3 .toclevel-3 {
	DISPLAY: none
}
.toclimit-4 .toclevel-4 {
	DISPLAY: none
}
.toclimit-5 .toclevel-5 {
	DISPLAY: none
}
.toclimit-6 .toclevel-6 {
	DISPLAY: none
}
.toclimit-7 .toclevel-7 {
	DISPLAY: none
}
.listify TD {
	DISPLAY: list-item
}
.listify TR {
	DISPLAY: block
}
.listify TABLE {
	DISPLAY: block
}
BLOCKQUOTE.templatequote {
	MARGIN-TOP: 0px
}
BLOCKQUOTE.templatequote DIV.templatequotecite {
	MARGIN-TOP: 0px; PADDING-LEFT: 2em; LINE-HEIGHT: 1em; TEXT-ALIGN: left
}
BLOCKQUOTE.templatequote DIV.templatequotecite CITE {
	FONT-SIZE: smaller
}
DIV.user-block {
	BORDER-RIGHT: #a9a9a9 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#a9a9a9 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: =
#a9a9a9 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #a9a9a9 1px solid; =
BACKGROUND-COLOR: #ffefd5
}
.nowraplinks A {
	WHITE-SPACE: nowrap
}
.template-documentation {
	CLEAR: both; BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; =
BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
MARGIN: 1em 0px 0px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #ecfcf4
}
.thumbinner {
	MIN-WIDTH: 100px
}
.imagemap-inline DIV {
	DISPLAY: inline
}
#wpUploadDescription {
	HEIGHT: 13em
}
SUP {
	LINE-HEIGHT: 1em
}
SUB {
	LINE-HEIGHT: 1em
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Monobook.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400

BODY.page-Main_Page #deleteconfirm {
	DISPLAY: none! important
}
BODY.page-Main_Page #t-cite {
	DISPLAY: none! important
}
BODY.page-Main_Page #lastmod {
	DISPLAY: none! important
}
BODY.page-Main_Page #siteSub {
	DISPLAY: none! important
}
BODY.page-Main_Page H1.firstHeading {
	DISPLAY: none! important
}
#siteNotice {
	MARGIN-TOP: 5px; PADDING-LEFT: 4px; BACKGROUND-COLOR: transparent; =
TEXT-ALIGN: center
}
#content {
	BACKGROUND-COLOR: #f8fcff
}
#p-cactions LI A {
	BACKGROUND-COLOR: #f8fcff
}
#p-cactions LI A:hover {
	BACKGROUND-COLOR: #f8fcff
}
#p-cactions LI.selected A {
	BACKGROUND-COLOR: #f8fcff
}
#content DIV.thumb {
	BORDER-LEFT-COLOR: #f8fcff; BORDER-BOTTOM-COLOR: #f8fcff; =
BORDER-TOP-COLOR: #f8fcff; BORDER-RIGHT-COLOR: #f8fcff
}
.ns-0 * #content {
	BACKGROUND-COLOR: white
}
.ns-0 * #p-cactions LI.selected A {
	BACKGROUND-COLOR: white
}
.ns-0 * #p-cactions LI A:hover {
	BACKGROUND-COLOR: white
}
.ns-0 * #p-cactions LI A {
	BACKGROUND-COLOR: #fbfbfb
}
.ns-0 * #content DIV.thumb {
	BORDER-LEFT-COLOR: white; BORDER-BOTTOM-COLOR: white; BORDER-TOP-COLOR: =
white; BORDER-RIGHT-COLOR: white
}
#p-cactions #ca-addsection A {
	PADDING-RIGHT: 0.8em; PADDING-LEFT: 0.8em
}
#content BLOCKQUOTE {
	FONT-SIZE: 93.75%; MARGIN: 1em 1.6em
}
#content BLOCKQUOTE P {
=09
}
#siteSub {
	DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: 92%
}
#ca-edit A {
	FONT-WEIGHT: bold! important
}

@media Print   =20
{
.editlink {
	DISPLAY: none
}
.noprint {
	DISPLAY: none
}
.metadata {
	DISPLAY: none
}
.dablink {
	DISPLAY: none
}
#content {
	BACKGROUND: #fff
}
    }
.diffchange {
	FONT-WEIGHT: bold
}
TD.diff-addedline {
	FONT-SIZE: 85%; VERTICAL-ALIGN: top
}
TD.diff-deletedline {
	FONT-SIZE: 85%; VERTICAL-ALIGN: top
}
TD.diff-context {
	FONT-SIZE: 85%; VERTICAL-ALIGN: top
}
#pt-login {
	FONT-WEIGHT: bold; FONT-SIZE: 110%
}
P.error {
	FONT-WEIGHT: bold
}
.toccolours {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 95%; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #aaa 1px =
solid; BACKGROUND-COLOR: #f9f9f9
}
.portlet A {
	TEXT-DECORATION: none
}
#editpage-specialchars A {
	TEXT-DECORATION: none
}
.portlet A:hover {
	TEXT-DECORATION: underline
}
#editpage-specialchars A:hover {
	TEXT-DECORATION: underline
}
DIV.thumb DIV A IMG {
	BACKGROUND-COLOR: #fff
}
DIV.topicon {
	DISPLAY: block! important; Z-INDEX: 100; POSITION: absolute; TOP: 10px
}
#coordinates {
	PADDING-RIGHT: 0em; PADDING-LEFT: 0em; FONT-SIZE: 85%; Z-INDEX: 1; =
RIGHT: 30px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: =
right; PADDING-BOTTOM: 0em; MARGIN: 0em; TEXT-TRANSFORM: none; =
BORDER-TOP-STYLE: none; TEXT-INDENT: 0px; LINE-HEIGHT: 1.5em; =
PADDING-TOP: 0em; BORDER-RIGHT-STYLE: none; WHITE-SPACE: nowrap; =
BORDER-LEFT-STYLE: none; POSITION: absolute; TOP: 3.7em; TEXT-ALIGN: =
right; BORDER-BOTTOM-STYLE: none
}
.portlet LI {
	LIST-STYLE-IMAGE: =
url(http://upload.wikimedia.org/wikipedia/en/1/18/Monobook-bullet.png)
}
LI.FA {
	LIST-STYLE-IMAGE: =
url(http://upload.wikimedia.org/wikipedia/en/d/d4/Monobook-bullet-star.pn=
g)
}
.infobox {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; COLOR: black; BORDER-BOTTOM: #aaa 1px solid; =
BACKGROUND-COLOR: #f9f9f9
}
.bordered.infobox TD {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
.bordered.infobox TH {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
.bordered.infobox .mergedtoprow TD {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid
}
.bordered.infobox .mergedtoprow TH {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid
}
.gallerybox .thumb IMG {
	BACKGROUND: #f9f9f9
}
.bordered.infobox .mergedrow TD {
	BORDER-RIGHT: #aaa 1px solid
}
.bordered.infobox .mergedrow TH {
	BORDER-RIGHT: #aaa 1px solid
}
DIV.thumb {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DIV.tright {
	MARGIN: 0.5em 0px 0.8em 1.4em; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
DIV.tleft {
	MARGIN: 0.5em 1.4em 0.8em 0px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
#bodyContent .plainlinks2 A[href^=3D'http://en.wikipedia.org'].external =
{
	COLOR: #002bb8! important
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://en.wikipedia.org/w/index.php?title=-&action=raw&gen=css&maxage=2678400

A.new {
	COLOR: #cc2200
}
#quickbar A.new {
	COLOR: #cc2200
}

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/common/wikibits.js?141

// MediaWiki JavaScript support functions=0A=
=0A=
var clientPC =3D navigator.userAgent.toLowerCase(); // Get client info=0A=
var is_gecko =3D ((clientPC.indexOf('gecko')!=3D-1) && =
(clientPC.indexOf('spoofer')=3D=3D-1)=0A=
                && (clientPC.indexOf('khtml') =3D=3D -1) && =
(clientPC.indexOf('netscape/7.0')=3D=3D-1));=0A=
var is_safari =3D ((clientPC.indexOf('applewebkit')!=3D-1) && =
(clientPC.indexOf('spoofer')=3D=3D-1));=0A=
var is_khtml =3D (navigator.vendor =3D=3D 'KDE' || ( document.childNodes =
&& !document.all && !navigator.taintEnabled ));=0A=
// For accesskeys=0A=
var is_ff2_win =3D (clientPC.indexOf('firefox/2')!=3D-1 || =
clientPC.indexOf('minefield/3')!=3D-1) && =
clientPC.indexOf('windows')!=3D-1;=0A=
var is_ff2_x11 =3D (clientPC.indexOf('firefox/2')!=3D-1 || =
clientPC.indexOf('minefield/3')!=3D-1) && clientPC.indexOf('x11')!=3D-1;=0A=
if (clientPC.indexOf('opera') !=3D -1) {=0A=
	var is_opera =3D true;=0A=
	var is_opera_preseven =3D (window.opera && !document.childNodes);=0A=
	var is_opera_seven =3D (window.opera && document.childNodes);=0A=
	var is_opera_95 =3D =
(clientPC.search(/opera\/(9.[5-9]|[1-9][0-9])/)!=3D-1);=0A=
}=0A=
=0A=
// Global external objects used by this script.=0A=
/*extern ta, stylepath, skin */=0A=
=0A=
// add any onload functions in this hook (please don't hard-code any =
events in the xhtml source)=0A=
var doneOnloadHook;=0A=
=0A=
if (!window.onloadFuncts) {=0A=
	var onloadFuncts =3D [];=0A=
}=0A=
=0A=
function addOnloadHook(hookFunct) {=0A=
	// Allows add-on scripts to add onload functions=0A=
	onloadFuncts[onloadFuncts.length] =3D hookFunct;=0A=
}=0A=
=0A=
function hookEvent(hookName, hookFunct) {=0A=
	if (window.addEventListener) {=0A=
		window.addEventListener(hookName, hookFunct, false);=0A=
	} else if (window.attachEvent) {=0A=
		window.attachEvent("on" + hookName, hookFunct);=0A=
	}=0A=
}=0A=
=0A=
// document.write special stylesheet links=0A=
if (typeof stylepath !=3D 'undefined' && typeof skin !=3D 'undefined') {=0A=
	if (is_opera_preseven) {=0A=
		document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"'+stylepath+'/'+skin+'/Opera6Fixes.css">');=0A=
	} else if (is_opera_seven && !is_opera_95) {=0A=
		document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"'+stylepath+'/'+skin+'/Opera7Fixes.css">');=0A=
	} else if (is_khtml) {=0A=
		document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"'+stylepath+'/'+skin+'/KHTMLFixes.css">');=0A=
	}=0A=
}=0A=
=0A=
if (wgBreakFrames) {=0A=
	// Un-trap us from framesets=0A=
	if (window.top !=3D window) {=0A=
		window.top.location =3D window.location;=0A=
	}=0A=
}=0A=
=0A=
// for enhanced RecentChanges=0A=
function toggleVisibility(_levelId, _otherId, _linkId) {=0A=
	var thisLevel =3D document.getElementById(_levelId);=0A=
	var otherLevel =3D document.getElementById(_otherId);=0A=
	var linkLevel =3D document.getElementById(_linkId);=0A=
	if (thisLevel.style.display =3D=3D 'none') {=0A=
		thisLevel.style.display =3D 'block';=0A=
		otherLevel.style.display =3D 'none';=0A=
		linkLevel.style.display =3D 'inline';=0A=
	} else {=0A=
		thisLevel.style.display =3D 'none';=0A=
		otherLevel.style.display =3D 'inline';=0A=
		linkLevel.style.display =3D 'none';=0A=
	}=0A=
}=0A=
=0A=
function historyRadios(parent) {=0A=
	var inputs =3D parent.getElementsByTagName('input');=0A=
	var radios =3D [];=0A=
	for (var i =3D 0; i < inputs.length; i++) {=0A=
		if (inputs[i].name =3D=3D "diff" || inputs[i].name =3D=3D "oldid") {=0A=
			radios[radios.length] =3D inputs[i];=0A=
		}=0A=
	}=0A=
	return radios;=0A=
}=0A=
=0A=
// check selection and tweak visibility/class onclick=0A=
function diffcheck() {=0A=
	var dli =3D false; // the li where the diff radio is checked=0A=
	var oli =3D false; // the li where the oldid radio is checked=0A=
	var hf =3D document.getElementById('pagehistory');=0A=
	if (!hf) {=0A=
		return true;=0A=
	}=0A=
	var lis =3D hf.getElementsByTagName('li');=0A=
	for (var i=3D0;i<lis.length;i++) {=0A=
		var inputs =3D historyRadios(lis[i]);=0A=
		if (inputs[1] && inputs[0]) {=0A=
			if (inputs[1].checked || inputs[0].checked) { // this row has a =
checked radio button=0A=
				if (inputs[1].checked && inputs[0].checked && inputs[0].value =3D=3D =
inputs[1].value) {=0A=
					return false;=0A=
				}=0A=
				if (oli) { // it's the second checked radio=0A=
					if (inputs[1].checked) {=0A=
						oli.className =3D "selected";=0A=
						return false;=0A=
					}=0A=
				} else if (inputs[0].checked) {=0A=
					return false;=0A=
				}=0A=
				if (inputs[0].checked) {=0A=
					dli =3D lis[i];=0A=
				}=0A=
				if (!oli) {=0A=
					inputs[0].style.visibility =3D 'hidden';=0A=
				}=0A=
				if (dli) {=0A=
					inputs[1].style.visibility =3D 'hidden';=0A=
				}=0A=
				lis[i].className =3D "selected";=0A=
				oli =3D lis[i];=0A=
			}  else { // no radio is checked in this row=0A=
				if (!oli) {=0A=
					inputs[0].style.visibility =3D 'hidden';=0A=
				} else {=0A=
					inputs[0].style.visibility =3D 'visible';=0A=
				}=0A=
				if (dli) {=0A=
					inputs[1].style.visibility =3D 'hidden';=0A=
				} else {=0A=
					inputs[1].style.visibility =3D 'visible';=0A=
				}=0A=
				lis[i].className =3D "";=0A=
			}=0A=
		}=0A=
	}=0A=
	return true;=0A=
}=0A=
=0A=
// page history stuff=0A=
// attach event handlers to the input elements on history page=0A=
function histrowinit() {=0A=
	var hf =3D document.getElementById('pagehistory');=0A=
	if (!hf) {=0A=
		return;=0A=
	}=0A=
	var lis =3D hf.getElementsByTagName('li');=0A=
	for (var i =3D 0; i < lis.length; i++) {=0A=
		var inputs =3D historyRadios(lis[i]);=0A=
		if (inputs[0] && inputs[1]) {=0A=
			inputs[0].onclick =3D diffcheck;=0A=
			inputs[1].onclick =3D diffcheck;=0A=
		}=0A=
	}=0A=
	diffcheck();=0A=
}=0A=
=0A=
// generate toc from prefs form, fold sections=0A=
// XXX: needs testing on IE/Mac and safari=0A=
// more comments to follow=0A=
function tabbedprefs() {=0A=
	var prefform =3D document.getElementById('preferences');=0A=
	if (!prefform || !document.createElement) {=0A=
		return;=0A=
	}=0A=
	if (prefform.nodeName.toLowerCase() =3D=3D 'a') {=0A=
		return; // Occasional IE problem=0A=
	}=0A=
	prefform.className =3D prefform.className + 'jsprefs';=0A=
	var sections =3D [];=0A=
	var children =3D prefform.childNodes;=0A=
	var seci =3D 0;=0A=
	for (var i =3D 0; i < children.length; i++) {=0A=
		if (children[i].nodeName.toLowerCase() =3D=3D 'fieldset') {=0A=
			children[i].id =3D 'prefsection-' + seci;=0A=
			children[i].className =3D 'prefsection';=0A=
			if (is_opera || is_khtml) {=0A=
				children[i].className =3D 'prefsection operaprefsection';=0A=
			}=0A=
			var legends =3D children[i].getElementsByTagName('legend');=0A=
			sections[seci] =3D {};=0A=
			legends[0].className =3D 'mainLegend';=0A=
			if (legends[0] && legends[0].firstChild.nodeValue) {=0A=
				sections[seci].text =3D legends[0].firstChild.nodeValue;=0A=
			} else {=0A=
				sections[seci].text =3D '# ' + seci;=0A=
			}=0A=
			sections[seci].secid =3D children[i].id;=0A=
			seci++;=0A=
			if (sections.length !=3D 1) {=0A=
				children[i].style.display =3D 'none';=0A=
			} else {=0A=
				var selectedid =3D children[i].id;=0A=
			}=0A=
		}=0A=
	}=0A=
	var toc =3D document.createElement('ul');=0A=
	toc.id =3D 'preftoc';=0A=
	toc.selectedid =3D selectedid;=0A=
	for (i =3D 0; i < sections.length; i++) {=0A=
		var li =3D document.createElement('li');=0A=
		if (i =3D=3D=3D 0) {=0A=
			li.className =3D 'selected';=0A=
		}=0A=
		var a =3D document.createElement('a');=0A=
		a.href =3D '#' + sections[i].secid;=0A=
		a.onmousedown =3D a.onclick =3D uncoversection;=0A=
		a.appendChild(document.createTextNode(sections[i].text));=0A=
		a.secid =3D sections[i].secid;=0A=
		li.appendChild(a);=0A=
		toc.appendChild(li);=0A=
	}=0A=
	prefform.parentNode.insertBefore(toc, =
prefform.parentNode.childNodes[0]);=0A=
	document.getElementById('prefsubmit').id =3D 'prefcontrol';=0A=
}=0A=
=0A=
function uncoversection() {=0A=
	var oldsecid =3D this.parentNode.parentNode.selectedid;=0A=
	var newsec =3D document.getElementById(this.secid);=0A=
	if (oldsecid !=3D this.secid) {=0A=
		var ul =3D document.getElementById('preftoc');=0A=
		document.getElementById(oldsecid).style.display =3D 'none';=0A=
		newsec.style.display =3D 'block';=0A=
		ul.selectedid =3D this.secid;=0A=
		var lis =3D ul.getElementsByTagName('li');=0A=
		for (var i =3D 0; i< lis.length; i++) {=0A=
			lis[i].className =3D '';=0A=
		}=0A=
		this.parentNode.className =3D 'selected';=0A=
	}=0A=
	return false;=0A=
}=0A=
=0A=
// Timezone stuff=0A=
// tz in format [+-]HHMM=0A=
function checkTimezone(tz, msg) {=0A=
	var localclock =3D new Date();=0A=
	// returns negative offset from GMT in minutes=0A=
	var tzRaw =3D localclock.getTimezoneOffset();=0A=
	var tzHour =3D Math.floor( Math.abs(tzRaw) / 60);=0A=
	var tzMin =3D Math.abs(tzRaw) % 60;=0A=
	var tzString =3D ((tzRaw >=3D 0) ? "-" : "+") + ((tzHour < 10) ? "0" : =
"") + tzHour + ((tzMin < 10) ? "0" : "") + tzMin;=0A=
	if (tz !=3D tzString) {=0A=
		var junk =3D msg.split('$1');=0A=
		document.write(junk[0] + "UTC" + tzString + junk[1]);=0A=
	}=0A=
}=0A=
=0A=
function unhidetzbutton() {=0A=
	var tzb =3D document.getElementById('guesstimezonebutton');=0A=
	if (tzb) {=0A=
		tzb.style.display =3D 'inline';=0A=
	}=0A=
}=0A=
=0A=
// in [-]HH:MM format...=0A=
// won't yet work with non-even tzs=0A=
function fetchTimezone() {=0A=
	// FIXME: work around Safari bug=0A=
	var localclock =3D new Date();=0A=
	// returns negative offset from GMT in minutes=0A=
	var tzRaw =3D localclock.getTimezoneOffset();=0A=
	var tzHour =3D Math.floor( Math.abs(tzRaw) / 60);=0A=
	var tzMin =3D Math.abs(tzRaw) % 60;=0A=
	var tzString =3D ((tzRaw >=3D 0) ? "-" : "") + ((tzHour < 10) ? "0" : =
"") + tzHour +=0A=
		":" + ((tzMin < 10) ? "0" : "") + tzMin;=0A=
	return tzString;=0A=
}=0A=
=0A=
function guessTimezone(box) {=0A=
	document.getElementsByName("wpHourDiff")[0].value =3D fetchTimezone();=0A=
}=0A=
=0A=
function showTocToggle() {=0A=
	if (document.createTextNode) {=0A=
		// Uses DOM calls to avoid document.write + XHTML issues=0A=
=0A=
		var linkHolder =3D document.getElementById('toctitle');=0A=
		if (!linkHolder) {=0A=
			return;=0A=
		}=0A=
=0A=
		var outerSpan =3D document.createElement('span');=0A=
		outerSpan.className =3D 'toctoggle';=0A=
=0A=
		var toggleLink =3D document.createElement('a');=0A=
		toggleLink.id =3D 'togglelink';=0A=
		toggleLink.className =3D 'internal';=0A=
		toggleLink.href =3D 'javascript:toggleToc()';=0A=
		toggleLink.appendChild(document.createTextNode(tocHideText));=0A=
=0A=
		outerSpan.appendChild(document.createTextNode('['));=0A=
		outerSpan.appendChild(toggleLink);=0A=
		outerSpan.appendChild(document.createTextNode(']'));=0A=
=0A=
		linkHolder.appendChild(document.createTextNode(' '));=0A=
		linkHolder.appendChild(outerSpan);=0A=
=0A=
		var cookiePos =3D document.cookie.indexOf("hidetoc=3D");=0A=
		if (cookiePos > -1 && document.cookie.charAt(cookiePos + 8) =3D=3D 1) {=0A=
			toggleToc();=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function changeText(el, newText) {=0A=
	// Safari work around=0A=
	if (el.innerText) {=0A=
		el.innerText =3D newText;=0A=
	} else if (el.firstChild && el.firstChild.nodeValue) {=0A=
		el.firstChild.nodeValue =3D newText;=0A=
	}=0A=
}=0A=
=0A=
function toggleToc() {=0A=
	var toc =3D =
document.getElementById('toc').getElementsByTagName('ul')[0];=0A=
	var toggleLink =3D document.getElementById('togglelink');=0A=
=0A=
	if (toc && toggleLink && toc.style.display =3D=3D 'none') {=0A=
		changeText(toggleLink, tocHideText);=0A=
		toc.style.display =3D 'block';=0A=
		document.cookie =3D "hidetoc=3D0";=0A=
	} else {=0A=
		changeText(toggleLink, tocShowText);=0A=
		toc.style.display =3D 'none';=0A=
		document.cookie =3D "hidetoc=3D1";=0A=
	}=0A=
}=0A=
=0A=
var mwEditButtons =3D [];=0A=
var mwCustomEditButtons =3D []; // eg to add in MediaWiki:Common.js=0A=
=0A=
// this function generates the actual toolbar buttons with localized text=0A=
// we use it to avoid creating the toolbar where javascript is not =
enabled=0A=
function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText, =
imageId) {=0A=
	// Don't generate buttons for browsers which don't fully=0A=
	// support it.=0A=
	mwEditButtons[mwEditButtons.length] =3D=0A=
		{"imageId": imageId,=0A=
		 "imageFile": imageFile,=0A=
		 "speedTip": speedTip,=0A=
		 "tagOpen": tagOpen,=0A=
		 "tagClose": tagClose,=0A=
		 "sampleText": sampleText};=0A=
}=0A=
=0A=
// this function generates the actual toolbar buttons with localized text=0A=
// we use it to avoid creating the toolbar where javascript is not =
enabled=0A=
function mwInsertEditButton(parent, item) {=0A=
	var image =3D document.createElement("img");=0A=
	image.width =3D 23;=0A=
	image.height =3D 22;=0A=
	image.className =3D "mw-toolbar-editbutton";=0A=
	if (item.imageId) image.id =3D item.imageId;=0A=
	image.src =3D item.imageFile;=0A=
	image.border =3D 0;=0A=
	image.alt =3D item.speedTip;=0A=
	image.title =3D item.speedTip;=0A=
	image.style.cursor =3D "pointer";=0A=
	image.onclick =3D function() {=0A=
		insertTags(item.tagOpen, item.tagClose, item.sampleText);=0A=
		return false;=0A=
	};=0A=
=0A=
	parent.appendChild(image);=0A=
	return true;=0A=
}=0A=
=0A=
function mwSetupToolbar() {=0A=
	var toolbar =3D document.getElementById('toolbar');=0A=
	if (!toolbar) { return false; }=0A=
=0A=
	var textbox =3D document.getElementById('wpTextbox1');=0A=
	if (!textbox) { return false; }=0A=
=0A=
	// Don't generate buttons for browsers which don't fully=0A=
	// support it.=0A=
	if (!(document.selection && document.selection.createRange)=0A=
		&& textbox.selectionStart =3D=3D=3D null) {=0A=
		return false;=0A=
	}=0A=
=0A=
	for (var i =3D 0; i < mwEditButtons.length; i++) {=0A=
		mwInsertEditButton(toolbar, mwEditButtons[i]);=0A=
	}=0A=
	for (var i =3D 0; i < mwCustomEditButtons.length; i++) {=0A=
		mwInsertEditButton(toolbar, mwCustomEditButtons[i]);=0A=
	}=0A=
	return true;=0A=
}=0A=
=0A=
function escapeQuotes(text) {=0A=
	var re =3D new RegExp("'","g");=0A=
	text =3D text.replace(re,"\\'");=0A=
	re =3D new RegExp("\\n","g");=0A=
	text =3D text.replace(re,"\\n");=0A=
	return escapeQuotesHTML(text);=0A=
}=0A=
=0A=
function escapeQuotesHTML(text) {=0A=
	var re =3D new RegExp('&',"g");=0A=
	text =3D text.replace(re,"&amp;");=0A=
	re =3D new RegExp('"',"g");=0A=
	text =3D text.replace(re,"&quot;");=0A=
	re =3D new RegExp('<',"g");=0A=
	text =3D text.replace(re,"&lt;");=0A=
	re =3D new RegExp('>',"g");=0A=
	text =3D text.replace(re,"&gt;");=0A=
	return text;=0A=
}=0A=
=0A=
// apply tagOpen/tagClose to selection in textarea,=0A=
// use sampleText instead of selection if there is none=0A=
function insertTags(tagOpen, tagClose, sampleText) {=0A=
	var txtarea;=0A=
	if (document.editform) {=0A=
		txtarea =3D document.editform.wpTextbox1;=0A=
	} else {=0A=
		// some alternate form? take the first one we can find=0A=
		var areas =3D document.getElementsByTagName('textarea');=0A=
		txtarea =3D areas[0];=0A=
	}=0A=
	var selText, isSample =3D false;=0A=
=0A=
	if (document.selection  && document.selection.createRange) { // IE/Opera=0A=
=0A=
		//save window scroll position=0A=
		if (document.documentElement && document.documentElement.scrollTop)=0A=
			var winScroll =3D document.documentElement.scrollTop=0A=
		else if (document.body)=0A=
			var winScroll =3D document.body.scrollTop;=0A=
		//get current selection  =0A=
		txtarea.focus();=0A=
		var range =3D document.selection.createRange();=0A=
		selText =3D range.text;=0A=
		//insert tags=0A=
		checkSelectedText();=0A=
		range.text =3D tagOpen + selText + tagClose;=0A=
		//mark sample text as selected=0A=
		if (isSample && range.moveStart) {=0A=
			if (window.opera)=0A=
				tagClose =3D tagClose.replace(/\n/g,'');=0A=
			range.moveStart('character', - tagClose.length - selText.length); =0A=
			range.moveEnd('character', - tagClose.length); =0A=
		}=0A=
		range.select();   =0A=
		//restore window scroll position=0A=
		if (document.documentElement && document.documentElement.scrollTop)=0A=
			document.documentElement.scrollTop =3D winScroll=0A=
		else if (document.body)=0A=
			document.body.scrollTop =3D winScroll;=0A=
=0A=
	} else if (txtarea.selectionStart || txtarea.selectionStart =3D=3D '0') =
{ // Mozilla=0A=
=0A=
		//save textarea scroll position=0A=
		var textScroll =3D txtarea.scrollTop;=0A=
		//get current selection=0A=
		txtarea.focus();=0A=
		var startPos =3D txtarea.selectionStart;=0A=
		var endPos =3D txtarea.selectionEnd;=0A=
		selText =3D txtarea.value.substring(startPos, endPos);=0A=
		//insert tags=0A=
		checkSelectedText();=0A=
		txtarea.value =3D txtarea.value.substring(0, startPos)=0A=
			+ tagOpen + selText + tagClose=0A=
			+ txtarea.value.substring(endPos, txtarea.value.length);=0A=
		//set new selection=0A=
		if (isSample) {=0A=
			txtarea.selectionStart =3D startPos + tagOpen.length;=0A=
			txtarea.selectionEnd =3D startPos + tagOpen.length + selText.length;=0A=
		} else {=0A=
			txtarea.selectionStart =3D startPos + tagOpen.length + selText.length =
+ tagClose.length;=0A=
			txtarea.selectionEnd =3D txtarea.selectionStart;=0A=
		}=0A=
		//restore textarea scroll position=0A=
		txtarea.scrollTop =3D textScroll;=0A=
	} =0A=
=0A=
	function checkSelectedText(){=0A=
		if (!selText) {=0A=
			selText =3D sampleText;=0A=
			isSample =3D true;=0A=
		} else if (selText.charAt(selText.length - 1) =3D=3D ' ') { //exclude =
ending space char=0A=
			selText =3D selText.substring(0, selText.length - 1);=0A=
			tagClose +=3D ' '=0A=
		} =0A=
	}=0A=
=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * Set the accesskey prefix based on browser detection.=0A=
 */=0A=
var tooltipAccessKeyPrefix =3D 'alt-';=0A=
if (is_opera) {=0A=
	tooltipAccessKeyPrefix =3D 'shift-esc-';=0A=
} else if (is_safari=0A=
	   || navigator.userAgent.toLowerCase().indexOf('mac') !=3D -1=0A=
	   || navigator.userAgent.toLowerCase().indexOf('konqueror') !=3D -1 ) {=0A=
	tooltipAccessKeyPrefix =3D 'ctrl-';=0A=
} else if (is_ff2_x11 || is_ff2_win) {=0A=
	tooltipAccessKeyPrefix =3D 'alt-shift-';=0A=
}=0A=
var tooltipAccessKeyRegexp =3D /\[(ctrl-)?(alt-)?(shift-)?(esc-)?.\]$/;=0A=
=0A=
/**=0A=
 * Add the appropriate prefix to the accesskey shown in the tooltip.=0A=
 * If the nodeList parameter is given, only those nodes are updated;=0A=
 * otherwise, all the nodes that will probably have accesskeys by=0A=
 * default are updated.=0A=
 *=0A=
 * @param Array nodeList -- list of elements to update=0A=
 */=0A=
function updateTooltipAccessKeys( nodeList ) {=0A=
	if ( !nodeList ) {=0A=
		// skins without a "column-one" element don't seem to have links with =
accesskeys either=0A=
		var columnOne =3D document.getElementById("column-one");=0A=
		if ( columnOne )=0A=
			updateTooltipAccessKeys( columnOne.getElementsByTagName("a") );=0A=
		// these are rare enough that no such optimization is needed=0A=
		updateTooltipAccessKeys( document.getElementsByTagName("input") );=0A=
		updateTooltipAccessKeys( document.getElementsByTagName("label") );=0A=
		return;=0A=
	}=0A=
=0A=
	for ( var i =3D 0; i < nodeList.length; i++ ) {=0A=
		var element =3D nodeList[i];=0A=
		var tip =3D element.getAttribute("title");=0A=
		var key =3D element.getAttribute("accesskey");=0A=
		if ( key && tooltipAccessKeyRegexp.exec(tip) ) {=0A=
			tip =3D tip.replace(tooltipAccessKeyRegexp,=0A=
					  "["+tooltipAccessKeyPrefix+key+"]");=0A=
			element.setAttribute("title", tip );=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/**=0A=
 * Add a link to one of the portlet menus on the page, including:=0A=
 *=0A=
 * p-cactions: Content actions (shown as tabs above the main content in =
Monobook)=0A=
 * p-personal: Personal tools (shown at the top right of the page in =
Monobook)=0A=
 * p-navigation: Navigation=0A=
 * p-tb: Toolbox=0A=
 *=0A=
 * This function exists for the convenience of custom JS authors.  All=0A=
 * but the first three parameters are optional, though providing at=0A=
 * least an id and a tooltip is recommended.=0A=
 *=0A=
 * By default the new link will be added to the end of the list.  To=0A=
 * add the link before a given existing item, pass the DOM node of=0A=
 * that item (easily obtained with document.getElementById()) as the=0A=
 * nextnode parameter; to add the link _after_ an existing item, pass=0A=
 * the node's nextSibling instead.=0A=
 *=0A=
 * @param String portlet -- id of the target portlet ("p-cactions", =
"p-personal", "p-navigation" or "p-tb")=0A=
 * @param String href -- link URL=0A=
 * @param String text -- link text (will be automatically lowercased by =
CSS for p-cactions in Monobook)=0A=
 * @param String id -- id of the new item, should be unique and =
preferably have the appropriate prefix ("ca-", "pt-", "n-" or "t-")=0A=
 * @param String tooltip -- text to show when hovering over the link, =
without accesskey suffix=0A=
 * @param String accesskey -- accesskey to activate this link (one =
character, try to avoid conflicts)=0A=
 * @param Node nextnode -- the DOM node before which the new item should =
be added, should be another item in the same list=0A=
 *=0A=
 * @return Node -- the DOM node of the new item (an LI element) or null=0A=
 */=0A=
function addPortletLink(portlet, href, text, id, tooltip, accesskey, =
nextnode) {=0A=
	var node =3D document.getElementById(portlet);=0A=
	if ( !node ) return null;=0A=
	node =3D node.getElementsByTagName( "ul" )[0];=0A=
	if ( !node ) return null;=0A=
=0A=
	var link =3D document.createElement( "a" );=0A=
	link.appendChild( document.createTextNode( text ) );=0A=
	link.href =3D href;=0A=
=0A=
	var item =3D document.createElement( "li" );=0A=
	item.appendChild( link );=0A=
	if ( id ) item.id =3D id;=0A=
=0A=
	if ( accesskey ) {=0A=
		link.setAttribute( "accesskey", accesskey );=0A=
		tooltip +=3D " ["+accesskey+"]";=0A=
	}=0A=
	if ( tooltip ) {=0A=
		link.setAttribute( "title", tooltip );=0A=
	}=0A=
	if ( accesskey && tooltip ) {=0A=
		updateTooltipAccessKeys( new Array( link ) );=0A=
	}=0A=
=0A=
	if ( nextnode && nextnode.parentNode =3D=3D node )=0A=
		node.insertBefore( item, nextnode );=0A=
	else=0A=
		node.appendChild( item );  // IE compatibility (?)=0A=
=0A=
	return item;=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * Set up accesskeys/tooltips from the deprecated ta array.  If doId=0A=
 * is specified, only set up for that id.  Note that this function is=0A=
 * deprecated and will not be supported indefinitely -- use=0A=
 * updateTooltipAccessKey() instead.=0A=
 *=0A=
 * @param mixed doId string or null=0A=
 */=0A=
function akeytt( doId ) {=0A=
	// A lot of user scripts (and some of the code below) break if=0A=
	// ta isn't defined, so we make sure it is.  Explictly using=0A=
	// window.ta avoids a "ta is not defined" error.=0A=
	if (!window.ta) window.ta =3D new Array;=0A=
=0A=
	// Make a local, possibly restricted, copy to avoid clobbering=0A=
	// the original.=0A=
	var ta;=0A=
	if ( doId ) {=0A=
		ta =3D [doId];=0A=
	} else {=0A=
		ta =3D window.ta;=0A=
	}=0A=
=0A=
	// Now deal with evil deprecated ta=0A=
	var watchCheckboxExists =3D document.getElementById( 'wpWatchthis' ) ? =
true : false;=0A=
	for (var id in ta) {=0A=
		var n =3D document.getElementById(id);=0A=
		if (n) {=0A=
			var a =3D null;=0A=
			var ak =3D '';=0A=
			// Are we putting accesskey in it=0A=
			if (ta[id][0].length > 0) {=0A=
				// Is this object a object? If not assume it's the next child.=0A=
=0A=
				if (n.nodeName.toLowerCase() =3D=3D "a") {=0A=
					a =3D n;=0A=
				} else {=0A=
					a =3D n.childNodes[0];=0A=
				}=0A=
			 	// Don't add an accesskey for the watch tab if the watch=0A=
			 	// checkbox is also available.=0A=
				if (a && ((id !=3D 'ca-watch' && id !=3D 'ca-unwatch') || =
!watchCheckboxExists)) {=0A=
					a.accessKey =3D ta[id][0];=0A=
					ak =3D ' ['+tooltipAccessKeyPrefix+ta[id][0]+']';=0A=
				}=0A=
			} else {=0A=
				// We don't care what type the object is when assigning tooltip=0A=
				a =3D n;=0A=
				ak =3D '';=0A=
			}=0A=
=0A=
			if (a) {=0A=
				a.title =3D ta[id][1]+ak;=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function setupRightClickEdit() {=0A=
	if (document.getElementsByTagName) {=0A=
		var spans =3D document.getElementsByTagName('span');=0A=
		for (var i =3D 0; i < spans.length; i++) {=0A=
			var el =3D spans[i];=0A=
			if(el.className =3D=3D 'editsection') {=0A=
				addRightClickEditHandler(el);=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function addRightClickEditHandler(el) {=0A=
	for (var i =3D 0; i < el.childNodes.length; i++) {=0A=
		var link =3D el.childNodes[i];=0A=
		if (link.nodeType =3D=3D 1 && link.nodeName.toLowerCase() =3D=3D 'a') {=0A=
			var editHref =3D link.getAttribute('href');=0A=
			// find the enclosing (parent) header=0A=
			var prev =3D el.parentNode;=0A=
			if (prev && prev.nodeType =3D=3D 1 &&=0A=
			prev.nodeName.match(/^[Hh][1-6]$/)) {=0A=
				prev.oncontextmenu =3D function(e) {=0A=
					if (!e) { e =3D window.event; }=0A=
					// e is now the event in all browsers=0A=
					var targ;=0A=
					if (e.target) { targ =3D e.target; }=0A=
					else if (e.srcElement) { targ =3D e.srcElement; }=0A=
					if (targ.nodeType =3D=3D 3) { // defeat Safari bug=0A=
						targ =3D targ.parentNode;=0A=
					}=0A=
					// targ is now the target element=0A=
=0A=
					// We don't want to deprive the noble reader of a context menu=0A=
					// for the section edit link, do we?  (Might want to extend this=0A=
					// to all <a>'s?)=0A=
					if (targ.nodeName.toLowerCase() !=3D 'a'=0A=
					|| targ.parentNode.className !=3D 'editsection') {=0A=
						document.location =3D editHref;=0A=
						return false;=0A=
					}=0A=
					return true;=0A=
				};=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
var checkboxes;=0A=
var lastCheckbox;=0A=
=0A=
function setupCheckboxShiftClick() {=0A=
	checkboxes =3D [];=0A=
	lastCheckbox =3D null;=0A=
	var inputs =3D document.getElementsByTagName('input');=0A=
	addCheckboxClickHandlers(inputs);=0A=
}=0A=
=0A=
function addCheckboxClickHandlers(inputs, start) {=0A=
	if ( !start) start =3D 0;=0A=
=0A=
	var finish =3D start + 250;=0A=
	if ( finish > inputs.length )=0A=
		finish =3D inputs.length;=0A=
=0A=
	for ( var i =3D start; i < finish; i++ ) {=0A=
		var cb =3D inputs[i];=0A=
		if ( !cb.type || cb.type.toLowerCase() !=3D 'checkbox' )=0A=
			continue;=0A=
		var end =3D checkboxes.length;=0A=
		checkboxes[end] =3D cb;=0A=
		cb.index =3D end;=0A=
		cb.onclick =3D checkboxClickHandler;=0A=
	}=0A=
=0A=
	if ( finish < inputs.length ) {=0A=
		setTimeout( function () {=0A=
			addCheckboxClickHandlers(inputs, finish);=0A=
		}, 200 );=0A=
	}=0A=
}=0A=
=0A=
function checkboxClickHandler(e) {=0A=
	if (typeof e =3D=3D 'undefined') {=0A=
		e =3D window.event;=0A=
	}=0A=
	if ( !e.shiftKey || lastCheckbox =3D=3D=3D null ) {=0A=
		lastCheckbox =3D this.index;=0A=
		return true;=0A=
	}=0A=
	var endState =3D this.checked;=0A=
	var start, finish;=0A=
	if ( this.index < lastCheckbox ) {=0A=
		start =3D this.index + 1;=0A=
		finish =3D lastCheckbox;=0A=
	} else {=0A=
		start =3D lastCheckbox;=0A=
		finish =3D this.index - 1;=0A=
	}=0A=
	for (var i =3D start; i <=3D finish; ++i ) {=0A=
		checkboxes[i].checked =3D endState;=0A=
	}=0A=
	lastCheckbox =3D this.index;=0A=
	return true;=0A=
}=0A=
=0A=
function toggle_element_activation(ida,idb) {=0A=
	if (!document.getElementById) {=0A=
		return;=0A=
	}=0A=
	document.getElementById(ida).disabled=3Dtrue;=0A=
	document.getElementById(idb).disabled=3Dfalse;=0A=
}=0A=
=0A=
function toggle_element_check(ida,idb) {=0A=
	if (!document.getElementById) {=0A=
		return;=0A=
	}=0A=
	document.getElementById(ida).checked=3Dtrue;=0A=
	document.getElementById(idb).checked=3Dfalse;=0A=
}=0A=
=0A=
/**=0A=
 * Restore the edit box scroll state following a preview operation,=0A=
 * and set up a form submission handler to remember this state=0A=
 */=0A=
function scrollEditBox() {=0A=
	var editBox =3D document.getElementById( 'wpTextbox1' );=0A=
	var scrollTop =3D document.getElementById( 'wpScrolltop' );=0A=
	var editForm =3D document.getElementById( 'editform' );=0A=
	if( editBox && scrollTop ) {=0A=
		if( scrollTop.value )=0A=
			editBox.scrollTop =3D scrollTop.value;=0A=
		addHandler( editForm, 'submit', function() {=0A=
			document.getElementById( 'wpScrolltop' ).value =3D =
document.getElementById( 'wpTextbox1' ).scrollTop; =0A=
		} );=0A=
	}=0A=
}=0A=
hookEvent( 'load', scrollEditBox );=0A=
=0A=
var allmessages_nodelist =3D false;=0A=
var allmessages_modified =3D false;=0A=
var allmessages_timeout =3D false;=0A=
var allmessages_running =3D false;=0A=
=0A=
function allmessagesmodified() {=0A=
	allmessages_modified =3D !allmessages_modified;=0A=
	allmessagesfilter();=0A=
}=0A=
=0A=
function allmessagesfilter() {=0A=
	if ( allmessages_timeout )=0A=
		window.clearTimeout( allmessages_timeout );=0A=
=0A=
	if ( !allmessages_running )=0A=
		allmessages_timeout =3D window.setTimeout( 'allmessagesfilter_do();', =
500 );=0A=
}=0A=
=0A=
function allmessagesfilter_do() {=0A=
	if ( !allmessages_nodelist )=0A=
		return;=0A=
=0A=
	var text =3D document.getElementById('allmessagesinput').value;=0A=
	var nodef =3D allmessages_modified;=0A=
=0A=
	allmessages_running =3D true;=0A=
=0A=
	for ( var name in allmessages_nodelist ) {=0A=
		var nodes =3D allmessages_nodelist[name];=0A=
		var display =3D ( name.indexOf( text ) =3D=3D -1 ? 'none' : '' );=0A=
=0A=
		for ( var i =3D 0; i < nodes.length; i++)=0A=
			nodes[i].style.display =3D=0A=
				( nodes[i].className =3D=3D "def" && nodef=0A=
				  ? 'none' : display );=0A=
	}=0A=
=0A=
	if ( text !=3D document.getElementById('allmessagesinput').value ||=0A=
	     nodef !=3D allmessages_modified )=0A=
		allmessagesfilter_do();  // repeat=0A=
=0A=
	allmessages_running =3D false;=0A=
}=0A=
=0A=
function allmessagesfilter_init() {=0A=
	if ( allmessages_nodelist )=0A=
		return;=0A=
=0A=
	var nodelist =3D new Array();=0A=
	var templist =3D new Array();=0A=
=0A=
	var table =3D document.getElementById('allmessagestable');=0A=
	if ( !table ) return;=0A=
=0A=
	var rows =3D document.getElementsByTagName('tr');=0A=
	for ( var i =3D 0; i < rows.length; i++ ) {=0A=
		var id =3D rows[i].getAttribute('id')=0A=
		if ( id && id.substring(0,16) !=3D 'sp-allmessages-r' ) continue;=0A=
		templist[ id ] =3D rows[i];=0A=
	}=0A=
=0A=
	var spans =3D table.getElementsByTagName('span');=0A=
	for ( var i =3D 0; i < spans.length; i++ ) {=0A=
		var id =3D spans[i].getAttribute('id')=0A=
		if ( id && id.substring(0,17) !=3D 'sp-allmessages-i-' ) continue;=0A=
		if ( !spans[i].firstChild || spans[i].firstChild.nodeType !=3D 3 ) =
continue;=0A=
=0A=
		var nodes =3D new Array();=0A=
		var row1 =3D templist[ id.replace('i', 'r1') ];=0A=
		var row2 =3D templist[ id.replace('i', 'r2') ];=0A=
=0A=
		if ( row1 ) nodes[nodes.length] =3D row1;=0A=
		if ( row2 ) nodes[nodes.length] =3D row2;=0A=
		nodelist[ spans[i].firstChild.nodeValue ] =3D nodes;=0A=
	}=0A=
=0A=
	var k =3D document.getElementById('allmessagesfilter');=0A=
	if (k) { k.style.display =3D ''; }=0A=
=0A=
	allmessages_nodelist =3D nodelist;=0A=
}=0A=
=0A=
hookEvent( "load", allmessagesfilter_init );=0A=
=0A=
/*=0A=
	Written by Jonathan Snook, http://www.snook.ca/jonathan=0A=
	Add-ons by Robert Nyman, http://www.robertnyman.com=0A=
	Author says "The credit comment is all it takes, no license. Go crazy =
with it!:-)"=0A=
	From =
http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname=
/=0A=
*/=0A=
function getElementsByClassName(oElm, strTagName, oClassNames){=0A=
	var arrElements =3D (strTagName =3D=3D "*" && oElm.all)? oElm.all : =
oElm.getElementsByTagName(strTagName);=0A=
	var arrReturnElements =3D new Array();=0A=
	var arrRegExpClassNames =3D new Array();=0A=
	if(typeof oClassNames =3D=3D "object"){=0A=
		for(var i=3D0; i<oClassNames.length; i++){=0A=
			arrRegExpClassNames[arrRegExpClassNames.length] =3D=0A=
				new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + =
"(\\s|$)");=0A=
		}=0A=
	}=0A=
	else{=0A=
		arrRegExpClassNames[arrRegExpClassNames.length] =3D=0A=
			new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)");=0A=
	}=0A=
	var oElement;=0A=
	var bMatchesAll;=0A=
	for(var j=3D0; j<arrElements.length; j++){=0A=
		oElement =3D arrElements[j];=0A=
		bMatchesAll =3D true;=0A=
		for(var k=3D0; k<arrRegExpClassNames.length; k++){=0A=
			if(!arrRegExpClassNames[k].test(oElement.className)){=0A=
				bMatchesAll =3D false;=0A=
				break;=0A=
			}=0A=
		}=0A=
		if(bMatchesAll){=0A=
			arrReturnElements[arrReturnElements.length] =3D oElement;=0A=
		}=0A=
	}=0A=
	return (arrReturnElements)=0A=
}=0A=
=0A=
function redirectToFragment(fragment) {=0A=
	var match =3D navigator.userAgent.match(/AppleWebKit\/(\d+)/);=0A=
	if (match) {=0A=
		var webKitVersion =3D parseInt(match[1]);=0A=
		if (webKitVersion < 420) {=0A=
			// Released Safari w/ WebKit 418.9.1 messes up horribly=0A=
			// Nightlies of 420+ are ok=0A=
			return;=0A=
		}=0A=
	}=0A=
	if (is_gecko) {=0A=
		// Mozilla needs to wait until after load, otherwise the window =
doesn't scroll=0A=
		addOnloadHook(function () {=0A=
			if (window.location.hash =3D=3D "")=0A=
				window.location.hash =3D fragment;=0A=
		});=0A=
	} else {=0A=
		if (window.location.hash =3D=3D "")=0A=
			window.location.hash =3D fragment;=0A=
	}=0A=
}=0A=
=0A=
/*=0A=
 * Table sorting script  by Joost de Valk, check it out at =
http://www.joostdevalk.nl/code/sortable-table/.=0A=
 * Based on a script from =
http://www.kryogenix.org/code/browser/sorttable/.=0A=
 * Distributed under the MIT license: =
http://www.kryogenix.org/code/browser/licence.html .=0A=
 *=0A=
 * Copyright (c) 1997-2006 Stuart Langridge, Joost de Valk.=0A=
 *=0A=
 * @todo don't break on colspans/rowspans (bug 8028)=0A=
 * @todo language-specific digit grouping/decimals (bug 8063)=0A=
 * @todo support all accepted date formats (bug 8226)=0A=
 */=0A=
=0A=
var ts_image_path =3D stylepath+"/common/images/";=0A=
var ts_image_up =3D "sort_up.gif";=0A=
var ts_image_down =3D "sort_down.gif";=0A=
var ts_image_none =3D "sort_none.gif";=0A=
var ts_europeandate =3D wgContentLanguage !=3D "en"; // The =
non-American-inclined can change to "true"=0A=
var ts_alternate_row_colors =3D true;=0A=
var SORT_COLUMN_INDEX;=0A=
=0A=
function sortables_init() {=0A=
	var idnum =3D 0;=0A=
	// Find all tables with class sortable and make them sortable=0A=
	var tables =3D getElementsByClassName(document, "table", "sortable");=0A=
	for (var ti =3D 0; ti < tables.length ; ti++) {=0A=
		if (!tables[ti].id) {=0A=
			tables[ti].setAttribute('id','sortable_table_id_'+idnum);=0A=
			++idnum;=0A=
		}=0A=
		ts_makeSortable(tables[ti]);=0A=
	}=0A=
}=0A=
=0A=
function ts_makeSortable(table) {=0A=
	var firstRow;=0A=
	if (table.rows && table.rows.length > 0) {=0A=
		if (table.tHead && table.tHead.rows.length > 0) {=0A=
			firstRow =3D table.tHead.rows[table.tHead.rows.length-1];=0A=
		} else {=0A=
			firstRow =3D table.rows[0];=0A=
		}=0A=
	}=0A=
	if (!firstRow) return;=0A=
=0A=
	// We have a first row: assume it's the header, and make its contents =
clickable links=0A=
	for (var i =3D 0; i < firstRow.cells.length; i++) {=0A=
		var cell =3D firstRow.cells[i];=0A=
		if ((" "+cell.className+" ").indexOf(" unsortable ") =3D=3D -1) {=0A=
			cell.innerHTML +=3D '&nbsp;&nbsp;<a href=3D"#" class=3D"sortheader" =
onclick=3D"ts_resortTable(this);return false;"><span =
class=3D"sortarrow"><img src=3D"'+ ts_image_path + ts_image_none + '" =
alt=3D"&darr;"/></span></a>';=0A=
		}=0A=
	}=0A=
	if (ts_alternate_row_colors) {=0A=
		ts_alternate(table);=0A=
	}=0A=
}=0A=
=0A=
function ts_getInnerText(el) {=0A=
	if (typeof el =3D=3D "string") return el;=0A=
	if (typeof el =3D=3D "undefined") { return el };=0A=
	if (el.textContent) return el.textContent; // not needed but it is =
faster=0A=
	if (el.innerText) return el.innerText;     // IE doesn't have =
textContent=0A=
	var str =3D "";=0A=
=0A=
	var cs =3D el.childNodes;=0A=
	var l =3D cs.length;=0A=
	for (var i =3D 0; i < l; i++) {=0A=
		switch (cs[i].nodeType) {=0A=
			case 1: //ELEMENT_NODE=0A=
				str +=3D ts_getInnerText(cs[i]);=0A=
				break;=0A=
			case 3:	//TEXT_NODE=0A=
				str +=3D cs[i].nodeValue;=0A=
				break;=0A=
		}=0A=
	}=0A=
	return str;=0A=
}=0A=
=0A=
function ts_resortTable(lnk) {=0A=
	// get the span=0A=
	var span =3D lnk.getElementsByTagName('span')[0];=0A=
=0A=
	var td =3D lnk.parentNode;=0A=
	var tr =3D td.parentNode;=0A=
	var column =3D td.cellIndex;=0A=
=0A=
	var table =3D tr.parentNode;=0A=
	while (table && !(table.tagName && table.tagName.toLowerCase() =3D=3D =
'table'))=0A=
		table =3D table.parentNode;=0A=
	if (!table) return;=0A=
=0A=
	// Work out a type for the column=0A=
	if (table.rows.length <=3D 1) return;=0A=
=0A=
	// Skip the first row if that's where the headings are=0A=
	var rowStart =3D (table.tHead && table.tHead.rows.length > 0 ? 0 : 1);=0A=
=0A=
	var itm =3D "";=0A=
	for (var i =3D rowStart; i < table.rows.length; i++) {=0A=
		if (table.rows[i].cells.length > column) {=0A=
			itm =3D ts_getInnerText(table.rows[i].cells[column]);=0A=
			itm =3D itm.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, "");=0A=
			if (itm !=3D "") break;=0A=
		}=0A=
	}=0A=
=0A=
	sortfn =3D ts_sort_caseinsensitive;=0A=
	if (itm.match(/^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/))=0A=
		sortfn =3D ts_sort_date;=0A=
	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/))=0A=
		sortfn =3D ts_sort_date;=0A=
	if (itm.match(/^\d\d[\/.-]\d\d[\/.-]\d\d$/))=0A=
		sortfn =3D ts_sort_date;=0A=
	if (itm.match(/^[\u00a3$\u20ac]/)) // pound dollar euro=0A=
		sortfn =3D ts_sort_currency;=0A=
	if (itm.match(/^[\d.,]+\%?$/))=0A=
		sortfn =3D ts_sort_numeric;=0A=
=0A=
	var reverse =3D (span.getAttribute("sortdir") =3D=3D 'down');=0A=
=0A=
	var newRows =3D new Array();=0A=
	for (var j =3D rowStart; j < table.rows.length; j++) {=0A=
		var row =3D table.rows[j];=0A=
		var keyText =3D ts_getInnerText(row.cells[column]);=0A=
		var oldIndex =3D (reverse ? -j : j);=0A=
=0A=
		newRows[newRows.length] =3D new Array(row, keyText, oldIndex);=0A=
	}=0A=
=0A=
	newRows.sort(sortfn);=0A=
=0A=
	var arrowHTML;=0A=
	if (reverse) {=0A=
			arrowHTML =3D '<img src=3D"'+ ts_image_path + ts_image_down + '" =
alt=3D"&darr;"/>';=0A=
			newRows.reverse();=0A=
			span.setAttribute('sortdir','up');=0A=
	} else {=0A=
			arrowHTML =3D '<img src=3D"'+ ts_image_path + ts_image_up + '" =
alt=3D"&uarr;"/>';=0A=
			span.setAttribute('sortdir','down');=0A=
	}=0A=
=0A=
	// We appendChild rows that already exist to the tbody, so it moves =
them rather than creating new ones=0A=
	// don't do sortbottom rows=0A=
	for (var i =3D 0; i < newRows.length; i++) {=0A=
		if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") =3D=3D =
-1)=0A=
			table.tBodies[0].appendChild(newRows[i][0]);=0A=
	}=0A=
	// do sortbottom rows only=0A=
	for (var i =3D 0; i < newRows.length; i++) {=0A=
		if ((" "+newRows[i][0].className+" ").indexOf(" sortbottom ") !=3D -1)=0A=
			table.tBodies[0].appendChild(newRows[i][0]);=0A=
	}=0A=
=0A=
	// Delete any other arrows there may be showing=0A=
	var spans =3D getElementsByClassName(tr, "span", "sortarrow");=0A=
	for (var i =3D 0; i < spans.length; i++) {=0A=
		spans[i].innerHTML =3D '<img src=3D"'+ ts_image_path + ts_image_none + =
'" alt=3D"&darr;"/>';=0A=
	}=0A=
	span.innerHTML =3D arrowHTML;=0A=
=0A=
	ts_alternate(table);		=0A=
}=0A=
=0A=
function ts_dateToSortKey(date) {	=0A=
	// y2k notes: two digit years less than 50 are treated as 20XX, greater =
than 50 are treated as 19XX=0A=
	if (date.length =3D=3D 11) {=0A=
		switch (date.substr(3,3).toLowerCase()) {=0A=
			case "jan": var month =3D "01"; break;=0A=
			case "feb": var month =3D "02"; break;=0A=
			case "mar": var month =3D "03"; break;=0A=
			case "apr": var month =3D "04"; break;=0A=
			case "may": var month =3D "05"; break;=0A=
			case "jun": var month =3D "06"; break;=0A=
			case "jul": var month =3D "07"; break;=0A=
			case "aug": var month =3D "08"; break;=0A=
			case "sep": var month =3D "09"; break;=0A=
			case "oct": var month =3D "10"; break;=0A=
			case "nov": var month =3D "11"; break;=0A=
			case "dec": var month =3D "12"; break;=0A=
			// default: var month =3D "00";=0A=
		}=0A=
		return date.substr(7,4)+month+date.substr(0,2);=0A=
	} else if (date.length =3D=3D 10) {=0A=
		if (ts_europeandate =3D=3D false) {=0A=
			return date.substr(6,4)+date.substr(0,2)+date.substr(3,2);=0A=
		} else {=0A=
			return date.substr(6,4)+date.substr(3,2)+date.substr(0,2);=0A=
		}=0A=
	} else if (date.length =3D=3D 8) {=0A=
		yr =3D date.substr(6,2);=0A=
		if (parseInt(yr) < 50) { =0A=
			yr =3D '20'+yr; =0A=
		} else { =0A=
			yr =3D '19'+yr; =0A=
		}=0A=
		if (ts_europeandate =3D=3D true) {=0A=
			return yr+date.substr(3,2)+date.substr(0,2);=0A=
		} else {=0A=
			return yr+date.substr(0,2)+date.substr(3,2);=0A=
		}=0A=
	}=0A=
	return "00000000";=0A=
}=0A=
=0A=
function ts_parseFloat(num) {=0A=
	if (!num) return 0;=0A=
	num =3D parseFloat(num.replace(/,/g, ""));=0A=
	return (isNaN(num) ? 0 : num);=0A=
}=0A=
=0A=
function ts_sort_date(a,b) {=0A=
	var aa =3D ts_dateToSortKey(a[1]);=0A=
	var bb =3D ts_dateToSortKey(b[1]);=0A=
	return (aa < bb ? -1 : aa > bb ? 1 : a[2] - b[2]);=0A=
}=0A=
=0A=
function ts_sort_currency(a,b) {=0A=
	var aa =3D ts_parseFloat(a[1].replace(/[^0-9.]/g,''));=0A=
	var bb =3D ts_parseFloat(b[1].replace(/[^0-9.]/g,''));=0A=
	return (aa !=3D bb ? aa - bb : a[2] - b[2]);=0A=
}=0A=
=0A=
function ts_sort_numeric(a,b) {=0A=
	var aa =3D ts_parseFloat(a[1]);=0A=
	var bb =3D ts_parseFloat(b[1]);=0A=
	return (aa !=3D bb ? aa - bb : a[2] - b[2]);=0A=
}=0A=
=0A=
function ts_sort_caseinsensitive(a,b) {=0A=
	var aa =3D a[1].toLowerCase();=0A=
	var bb =3D b[1].toLowerCase();=0A=
	return (aa < bb ? -1 : aa > bb ? 1 : a[2] - b[2]);=0A=
}=0A=
=0A=
function ts_sort_default(a,b) {=0A=
	return (a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : a[2] - b[2]);=0A=
}=0A=
=0A=
function ts_alternate(table) {=0A=
	// Take object table and get all it's tbodies.=0A=
	var tableBodies =3D table.getElementsByTagName("tbody");=0A=
	// Loop through these tbodies=0A=
	for (var i =3D 0; i < tableBodies.length; i++) {=0A=
		// Take the tbody, and get all it's rows=0A=
		var tableRows =3D tableBodies[i].getElementsByTagName("tr");=0A=
		// Loop through these rows=0A=
		// Start at 1 because we want to leave the heading row untouched=0A=
		for (var j =3D 0; j < tableRows.length; j++) {=0A=
			// Check if j is even, and apply classes for both possible results=0A=
			var oldClasses =3D tableRows[j].className.split(" ");=0A=
			var newClassName =3D "";=0A=
			for (var k =3D 0; k < oldClasses.length; k++) {=0A=
				if (oldClasses[k] !=3D "" && oldClasses[k] !=3D "even" && =
oldClasses[k] !=3D "odd")=0A=
					newClassName +=3D oldClasses[k] + " ";=0A=
			}=0A=
			tableRows[j].className =3D newClassName + (j % 2 =3D=3D 0 ? "even" : =
"odd");=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/*=0A=
 * End of table sorting code=0A=
 */=0A=
 =0A=
 =0A=
/**=0A=
 * Add a cute little box at the top of the screen to inform the user of=0A=
 * something, replacing any preexisting message.=0A=
 *=0A=
 * @param String message HTML to be put inside the right div=0A=
 * @param String className   Used in adding a class; should be different =
for each=0A=
 *   call to allow CSS/JS to hide different boxes.  null =3D no class =
used.=0A=
 * @return Boolean       True on success, false on failure=0A=
 */=0A=
function jsMsg( message, className ) {=0A=
	if ( !document.getElementById ) {=0A=
		return false;=0A=
	}=0A=
	// We special-case skin structures provided by the software.  Skins that=0A=
	// choose to abandon or significantly modify our formatting can just =
define=0A=
	// an mw-js-message div to start with.=0A=
	var messageDiv =3D document.getElementById( 'mw-js-message' );=0A=
	if ( !messageDiv ) {=0A=
		messageDiv =3D document.createElement( 'div' );=0A=
		if ( document.getElementById( 'column-content' )=0A=
		&& document.getElementById( 'content' ) ) {=0A=
			// MonoBook, presumably=0A=
			document.getElementById( 'content' ).insertBefore(=0A=
				messageDiv,=0A=
				document.getElementById( 'content' ).firstChild=0A=
			);=0A=
		} else if ( document.getElementById('content')=0A=
		&& document.getElementById( 'article' ) ) {=0A=
			// Non-Monobook but still recognizable (old-style)=0A=
			document.getElementById( 'article').insertBefore(=0A=
				messageDiv,=0A=
				document.getElementById( 'article' ).firstChild=0A=
			);=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	}=0A=
=0A=
	messageDiv.setAttribute( 'id', 'mw-js-message' );=0A=
	if( className ) {=0A=
		messageDiv.setAttribute( 'class', 'mw-js-message-'+className );=0A=
	}=0A=
	messageDiv.innerHTML =3D message;=0A=
	return true;=0A=
}=0A=
=0A=
/**=0A=
 * Inject a cute little progress spinner after the specified element=0A=
 *=0A=
 * @param element Element to inject after=0A=
 * @param id Identifier string (for use with removeSpinner(), below)=0A=
 */=0A=
function injectSpinner( element, id ) {=0A=
	var spinner =3D document.createElement( "img" );=0A=
	spinner.id =3D "mw-spinner-" + id;=0A=
	spinner.src =3D stylepath + "/common/images/spinner.gif";=0A=
	spinner.alt =3D spinner.title =3D "...";=0A=
	if( element.nextSibling ) {=0A=
		element.parentNode.insertBefore( spinner, element.nextSibling );=0A=
	} else {=0A=
		element.parentNode.appendChild( spinner );=0A=
	}=0A=
}=0A=
=0A=
/**=0A=
 * Remove a progress spinner added with injectSpinner()=0A=
 *=0A=
 * @param id Identifier string=0A=
 */=0A=
function removeSpinner( id ) {=0A=
	var spinner =3D document.getElementById( "mw-spinner-" + id );=0A=
	if( spinner ) {=0A=
		spinner.parentNode.removeChild( spinner );=0A=
	}=0A=
}=0A=
=0A=
function runOnloadHook() {=0A=
	// don't run anything below this for non-dom browsers=0A=
	if (doneOnloadHook || !(document.getElementById && =
document.getElementsByTagName)) {=0A=
		return;=0A=
	}=0A=
=0A=
	// set this before running any hooks, since any errors below=0A=
	// might cause the function to terminate prematurely=0A=
	doneOnloadHook =3D true;=0A=
=0A=
	histrowinit();=0A=
	unhidetzbutton();=0A=
	tabbedprefs();=0A=
	updateTooltipAccessKeys( null );=0A=
	akeytt( null );=0A=
	scrollEditBox();=0A=
	setupCheckboxShiftClick();=0A=
	sortables_init();=0A=
=0A=
	// Run any added-on functions=0A=
	for (var i =3D 0; i < onloadFuncts.length; i++) {=0A=
		onloadFuncts[i]();=0A=
	}=0A=
}=0A=
=0A=
/**=0A=
 * Add an event handler to an element=0A=
 *=0A=
 * @param Element element Element to add handler to=0A=
 * @param String attach Event to attach to=0A=
 * @param callable handler Event handler callback=0A=
 */=0A=
function addHandler( element, attach, handler ) {=0A=
	if( window.addEventListener ) {=0A=
		element.addEventListener( attach, handler, false );=0A=
	} else if( window.attachEvent ) {=0A=
		element.attachEvent( 'on' + attach, handler );=0A=
	}=0A=
}=0A=
=0A=
/**=0A=
 * Add a click event handler to an element=0A=
 *=0A=
 * @param Element element Element to add handler to=0A=
 * @param callable handler Event handler callback=0A=
 */=0A=
function addClickHandler( element, handler ) {=0A=
	addHandler( element, 'click', handler );=0A=
}=0A=
//note: all skins should call runOnloadHook() at the end of html output,=0A=
//      so the below should be redundant. It's there just in case.=0A=
hookEvent("load", runOnloadHook);=0A=
hookEvent("load", mwSetupToolbar);=0A=

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/common/ajax.js?141

// remote scripting library=0A=
// (c) copyright 2005 modernmethod, inc=0A=
var sajax_debug_mode =3D false;=0A=
var sajax_request_type =3D "GET";=0A=
=0A=
/**=0A=
* if sajax_debug_mode is true, this function outputs given the message =
into =0A=
* the element with id =3D sajax_debug; if no such element exists in the =
document, =0A=
* it is injected.=0A=
*/=0A=
function sajax_debug(text) {=0A=
	if (!sajax_debug_mode) return false;=0A=
=0A=
	var e=3D document.getElementById('sajax_debug');=0A=
=0A=
	if (!e) {=0A=
		e=3D document.createElement("p");=0A=
		e.className=3D 'sajax_debug';=0A=
		e.id=3D 'sajax_debug';=0A=
=0A=
		var b=3D document.getElementsByTagName("body")[0];=0A=
=0A=
		if (b.firstChild) b.insertBefore(e, b.firstChild);=0A=
		else b.appendChild(e);=0A=
	}=0A=
=0A=
	var m=3D document.createElement("div");=0A=
	m.appendChild( document.createTextNode( text ) );=0A=
=0A=
	e.appendChild( m );=0A=
=0A=
	return true;=0A=
}=0A=
=0A=
/**=0A=
* compatibility wrapper for creating a new XMLHttpRequest object.=0A=
*/=0A=
function sajax_init_object() {=0A=
	sajax_debug("sajax_init_object() called..")=0A=
	var A;=0A=
	try {=0A=
		// Try the new style before ActiveX so we don't=0A=
		// unnecessarily trigger warnings in IE 7 when=0A=
		// set to prompt about ActiveX usage=0A=
		A =3D new XMLHttpRequest();=0A=
	} catch (e) {=0A=
		try {=0A=
			A=3Dnew ActiveXObject("Msxml2.XMLHTTP");=0A=
		} catch (e) {=0A=
			try {=0A=
				A=3Dnew ActiveXObject("Microsoft.XMLHTTP");=0A=
			} catch (oc) {=0A=
				A=3Dnull;=0A=
			}=0A=
		}=0A=
	}=0A=
	if (!A)=0A=
		sajax_debug("Could not create connection object.");=0A=
=0A=
	return A;=0A=
}=0A=
=0A=
/**=0A=
* Perform an ajax call to mediawiki. Calls are handeled by =
AjaxDispatcher.php=0A=
*   func_name - the name of the function to call. Must be registered in =
$wgAjaxExportList=0A=
*   args - an array of arguments to that function=0A=
*   target - the target that will handle the result of the call. If this =
is a function,=0A=
*            if will be called with the XMLHttpRequest as a parameter; =
if it's an input=0A=
*            element, its value will be set to the resultText; if it's =
another type of=0A=
*            element, its innerHTML will be set to the resultText.=0A=
*=0A=
* Example:=0A=
*    sajax_do_call('doFoo', [1, 2, 3], =
document.getElementById("showFoo"));=0A=
*=0A=
* This will call the doFoo function via MediaWiki's AjaxDispatcher, with=0A=
* (1, 2, 3) as the parameter list, and will show the result in the =
element=0A=
* with id =3D showFoo=0A=
*/=0A=
function sajax_do_call(func_name, args, target) {=0A=
	var i, x, n;=0A=
	var uri;=0A=
	var post_data;=0A=
	uri =3D wgServer +=0A=
		((wgScript =3D=3D null) ? (wgScriptPath + "/index.php") : wgScript) +=0A=
		"?action=3Dajax";=0A=
	if (sajax_request_type =3D=3D "GET") {=0A=
		if (uri.indexOf("?") =3D=3D -1)=0A=
			uri =3D uri + "?rs=3D" + encodeURIComponent(func_name);=0A=
		else=0A=
			uri =3D uri + "&rs=3D" + encodeURIComponent(func_name);=0A=
		for (i =3D 0; i < args.length; i++)=0A=
			uri =3D uri + "&rsargs[]=3D" + encodeURIComponent(args[i]);=0A=
		//uri =3D uri + "&rsrnd=3D" + new Date().getTime();=0A=
		post_data =3D null;=0A=
	} else {=0A=
		post_data =3D "rs=3D" + encodeURIComponent(func_name);=0A=
		for (i =3D 0; i < args.length; i++)=0A=
			post_data =3D post_data + "&rsargs[]=3D" + =
encodeURIComponent(args[i]);=0A=
	}=0A=
	x =3D sajax_init_object();=0A=
	if (!x) {=0A=
		alert("AJAX not supported");=0A=
		return false;=0A=
	}=0A=
=0A=
	try {=0A=
		x.open(sajax_request_type, uri, true);=0A=
	} catch (e) {=0A=
		if (window.location.hostname =3D=3D "localhost") {=0A=
			alert("Your browser blocks XMLHttpRequest to 'localhost', try using a =
real hostname for development/testing.");=0A=
		}=0A=
		throw e;=0A=
	}=0A=
	if (sajax_request_type =3D=3D "POST") {=0A=
		x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");=0A=
		x.setRequestHeader("Content-Type", =
"application/x-www-form-urlencoded");=0A=
	}=0A=
	x.setRequestHeader("Pragma", "cache=3Dyes");=0A=
	x.setRequestHeader("Cache-Control", "no-transform");=0A=
	x.onreadystatechange =3D function() {=0A=
		if (x.readyState !=3D 4)=0A=
			return;=0A=
=0A=
		sajax_debug("received (" + x.status + " " + x.statusText + ") " + =
x.responseText);=0A=
=0A=
		//if (x.status !=3D 200)=0A=
		//	alert("Error: " + x.status + " " + x.statusText + ": " + =
x.responseText);=0A=
		//else=0A=
=0A=
		if ( typeof( target ) =3D=3D 'function' ) {=0A=
			target( x );=0A=
		}=0A=
		else if ( typeof( target ) =3D=3D 'object' ) {=0A=
			if ( target.tagName =3D=3D 'INPUT' ) {=0A=
				if (x.status =3D=3D 200) target.value=3D x.responseText;=0A=
				//else alert("Error: " + x.status + " " + x.statusText + " (" + =
x.responseText + ")");=0A=
			}=0A=
			else {=0A=
				if (x.status =3D=3D 200) target.innerHTML =3D x.responseText;=0A=
				else target.innerHTML=3D "<div class=3D'error'>Error: " + x.status + =
" " + x.statusText + " (" + x.responseText + ")</div>";=0A=
			}=0A=
		}=0A=
		else {=0A=
			alert("bad target for sajax_do_call: not a function or object: " + =
target);=0A=
		}=0A=
=0A=
		return;=0A=
	}=0A=
=0A=
	sajax_debug(func_name + " uri =3D " + uri + " / post =3D " + post_data);=0A=
	x.send(post_data);=0A=
	sajax_debug(func_name + " waiting..");=0A=
	delete x;=0A=
=0A=
	return true;=0A=
}=0A=

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/skins-1.5/common/mwsuggest.js?141

/*=0A=
 * OpenSearch ajax suggestion engine for MediaWiki=0A=
 * =0A=
 * uses core MediaWiki open search support to fetch suggestions=0A=
 * and show them below search boxes and other inputs=0A=
 *=0A=
 * by Robert Stojnic (April 2008)=0A=
 */=0A=
 =0A=
// search_box_id -> Results object =0A=
var os_map =3D {};=0A=
// cached data, url -> json_text=0A=
var os_cache =3D {};=0A=
// global variables for suggest_keypress=0A=
var os_cur_keypressed =3D 0;=0A=
var os_last_keypress =3D 0;=0A=
var os_keypressed_count =3D 0;=0A=
// type: Timer=0A=
var os_timer =3D null;=0A=
// tie mousedown/up events=0A=
var os_mouse_pressed =3D false;=0A=
var os_mouse_num =3D -1;=0A=
// if true, the last change was made by mouse (and not keyboard)=0A=
var os_mouse_moved =3D false;=0A=
// delay between keypress and suggestion (in ms)=0A=
var os_search_timeout =3D 250;=0A=
// these pairs of inputs/forms will be autoloaded at startup=0A=
var os_autoload_inputs =3D new Array('searchInput', 'searchInput2', =
'powerSearchText', 'searchText');=0A=
var os_autoload_forms =3D new Array('searchform', 'searchform2', =
'powersearch', 'search' );=0A=
// if we stopped the service=0A=
var os_is_stopped =3D false;=0A=
// max lines to show in suggest table=0A=
var os_max_lines_per_suggest =3D 7;=0A=
// if we are about to focus the searchbox for the first time=0A=
var os_first_focus =3D true;=0A=
=0A=
/** Timeout timer class that will fetch the results */ =0A=
function os_Timer(id,r,query){=0A=
	this.id =3D id;=0A=
	this.r =3D r;=0A=
	this.query =3D query;	=0A=
}=0A=
=0A=
/** Property class for single search box */=0A=
function os_Results(name, formname){	=0A=
	this.searchform =3D formname; // id of the searchform=0A=
	this.searchbox =3D name; // id of the searchbox=0A=
	this.container =3D name+"Suggest"; // div that holds results=0A=
	this.resultTable =3D name+"Result"; // id base for the result table =
(+num =3D table row)=0A=
	this.resultText =3D name+"ResultText"; // id base for the spans within =
result tables (+num)=0A=
	this.toggle =3D name+"Toggle"; // div that has the toggle =
(enable/disable) link=0A=
	this.query =3D null; // last processed query=0A=
	this.results =3D null;  // parsed titles=0A=
	this.resultCount =3D 0; // number of results=0A=
	this.original =3D null; // query that user entered =0A=
	this.selected =3D -1; // which result is selected=0A=
	this.containerCount =3D 0; // number of results visible in container =0A=
	this.containerRow =3D 0; // height of result field in the container=0A=
	this.containerTotal =3D 0; // total height of the container will all =
results=0A=
	this.visible =3D false; // if container is visible=0A=
}=0A=
=0A=
/** Hide results div */=0A=
function os_hideResults(r){=0A=
	var c =3D document.getElementById(r.container);=0A=
	if(c !=3D null)=0A=
		c.style.visibility =3D "hidden";=0A=
	r.visible =3D false;=0A=
	r.selected =3D -1;=0A=
}=0A=
=0A=
/** Show results div */=0A=
function os_showResults(r){=0A=
	if(os_is_stopped)=0A=
		return;=0A=
	os_fitContainer(r);=0A=
	var c =3D document.getElementById(r.container);=0A=
	r.selected =3D -1;=0A=
	if(c !=3D null){=0A=
		c.scrollTop =3D 0;=0A=
		c.style.visibility =3D "visible";=0A=
		r.visible =3D true;=0A=
	}	=0A=
}=0A=
=0A=
function os_operaWidthFix(x){=0A=
	// TODO: better css2 incompatibility detection here=0A=
	if(is_opera || is_khtml || =
navigator.userAgent.toLowerCase().indexOf('firefox/1')!=3D-1){=0A=
		return x - 30; // opera&konqueror & old firefox don't understand =
overflow-x, estimate scrollbar width=0A=
	}	=0A=
	return x;=0A=
}=0A=
=0A=
function os_encodeQuery(value){=0A=
  if (encodeURIComponent) {=0A=
    return encodeURIComponent(value);=0A=
  }=0A=
  if(escape) {=0A=
    return escape(value);=0A=
  }=0A=
}=0A=
function os_decodeValue(value){=0A=
  if (decodeURIComponent) {=0A=
    return decodeURIComponent(value);=0A=
  } =0A=
  if(unescape){=0A=
  	return unescape(value);=0A=
  }=0A=
}=0A=
=0A=
/** Brower-dependent functions to find window inner size, and scroll =
status */=0A=
function f_clientWidth() {=0A=
	return f_filterResults (=0A=
		window.innerWidth ? window.innerWidth : 0,=0A=
		document.documentElement ? document.documentElement.clientWidth : 0,=0A=
		document.body ? document.body.clientWidth : 0=0A=
	);=0A=
}=0A=
function f_clientHeight() {=0A=
	return f_filterResults (=0A=
		window.innerHeight ? window.innerHeight : 0,=0A=
		document.documentElement ? document.documentElement.clientHeight : 0,=0A=
		document.body ? document.body.clientHeight : 0=0A=
	);=0A=
}=0A=
function f_scrollLeft() {=0A=
	return f_filterResults (=0A=
		window.pageXOffset ? window.pageXOffset : 0,=0A=
		document.documentElement ? document.documentElement.scrollLeft : 0,=0A=
		document.body ? document.body.scrollLeft : 0=0A=
	);=0A=
}=0A=
function f_scrollTop() {=0A=
	return f_filterResults (=0A=
		window.pageYOffset ? window.pageYOffset : 0,=0A=
		document.documentElement ? document.documentElement.scrollTop : 0,=0A=
		document.body ? document.body.scrollTop : 0=0A=
	);=0A=
}=0A=
function f_filterResults(n_win, n_docel, n_body) {=0A=
	var n_result =3D n_win ? n_win : 0;=0A=
	if (n_docel && (!n_result || (n_result > n_docel)))=0A=
		n_result =3D n_docel;=0A=
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;=0A=
}=0A=
=0A=
/** Get the height available for the results container */=0A=
function os_availableHeight(r){=0A=
	var absTop =3D document.getElementById(r.container).style.top;=0A=
	var px =3D absTop.lastIndexOf("px");=0A=
	if(px > 0)=0A=
		absTop =3D absTop.substring(0,px);=0A=
	return f_clientHeight() - (absTop - f_scrollTop());=0A=
}=0A=
=0A=
=0A=
/** Get element absolute position {left,top} */=0A=
function os_getElementPosition(elemID){=0A=
	var offsetTrail =3D document.getElementById(elemID);=0A=
	var offsetLeft =3D 0;=0A=
	var offsetTop =3D 0;=0A=
	while (offsetTrail){=0A=
		offsetLeft +=3D offsetTrail.offsetLeft;=0A=
		offsetTop +=3D offsetTrail.offsetTop;=0A=
		offsetTrail =3D offsetTrail.offsetParent;=0A=
	}=0A=
	if (navigator.userAgent.indexOf('Mac') !=3D -1 && typeof =
document.body.leftMargin !=3D 'undefined'){=0A=
		offsetLeft +=3D document.body.leftMargin;=0A=
		offsetTop +=3D document.body.topMargin;=0A=
	}=0A=
	return {left:offsetLeft,top:offsetTop};=0A=
}=0A=
=0A=
/** Create the container div that will hold the suggested titles */=0A=
function os_createContainer(r){=0A=
	var c =3D document.createElement("div");=0A=
	var s =3D document.getElementById(r.searchbox);=0A=
	var pos =3D os_getElementPosition(r.searchbox);	=0A=
	var left =3D pos.left;=0A=
	var top =3D pos.top + s.offsetHeight;=0A=
	c.className =3D "os-suggest";=0A=
	c.setAttribute("id", r.container);	=0A=
	document.body.appendChild(c); =0A=
	=0A=
	// dynamically generated style params	=0A=
	// IE workaround, cannot explicitely set "style" attribute=0A=
	c =3D document.getElementById(r.container);=0A=
	c.style.top =3D top+"px";=0A=
	c.style.left =3D left+"px";=0A=
	c.style.width =3D s.offsetWidth+"px";=0A=
	=0A=
	// mouse event handlers=0A=
	c.onmouseover =3D function(event) { os_eventMouseover(r.searchbox, =
event); };=0A=
	c.onmousemove =3D function(event) { os_eventMousemove(r.searchbox, =
event); };=0A=
	c.onmousedown =3D function(event) { return =
os_eventMousedown(r.searchbox, event); };=0A=
	c.onmouseup =3D function(event) { os_eventMouseup(r.searchbox, event); =
};=0A=
	return c;=0A=
}=0A=
=0A=
/** change container height to fit to screen */=0A=
function os_fitContainer(r){	=0A=
	var c =3D document.getElementById(r.container);=0A=
	var h =3D os_availableHeight(r) - 20;=0A=
	var inc =3D r.containerRow;=0A=
	h =3D parseInt(h/inc) * inc;=0A=
	if(h < (2 * inc) && r.resultCount > 1) // min: two results=0A=
		h =3D 2 * inc;	=0A=
	if((h/inc) > os_max_lines_per_suggest )=0A=
		h =3D inc * os_max_lines_per_suggest;=0A=
	if(h < r.containerTotal){=0A=
		c.style.height =3D h +"px";=0A=
		r.containerCount =3D parseInt(Math.round(h/inc));=0A=
	} else{=0A=
		c.style.height =3D r.containerTotal+"px";=0A=
		r.containerCount =3D r.resultCount;=0A=
	}=0A=
}=0A=
/** If some entries are longer than the box, replace text with "..." */=0A=
function os_trimResultText(r){=0A=
	var w =3D document.getElementById(r.container).offsetWidth;=0A=
	if(r.containerCount < r.resultCount){		=0A=
		w -=3D 20; // give 20px for scrollbar		=0A=
	} else=0A=
		w =3D os_operaWidthFix(w);=0A=
	if(w < 10)=0A=
		return;=0A=
	for(var i=3D0;i<r.resultCount;i++){=0A=
		var e =3D document.getElementById(r.resultText+i);=0A=
		var replace =3D 1;=0A=
		var lastW =3D e.offsetWidth+1;=0A=
		var iteration =3D 0;=0A=
		var changedText =3D false;=0A=
		while(e.offsetWidth > w && (e.offsetWidth < lastW || iteration<2)){=0A=
			changedText =3D true;=0A=
			lastW =3D e.offsetWidth;=0A=
			var l =3D e.innerHTML;			=0A=
			e.innerHTML =3D l.substring(0,l.length-replace)+"...";=0A=
			iteration++;=0A=
			replace =3D 4; // how many chars to replace=0A=
		}=0A=
		if(changedText){=0A=
			// show hint for trimmed titles=0A=
			=
document.getElementById(r.resultTable+i).setAttribute("title",r.results[i=
]);=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/** Handles data from XMLHttpRequest, and updates the suggest results */=0A=
function os_updateResults(r, query, text, cacheKey){	 =0A=
	os_cache[cacheKey] =3D text;=0A=
	r.query =3D query;=0A=
	r.original =3D query;=0A=
	if(text =3D=3D ""){=0A=
		r.results =3D null;=0A=
		r.resultCount =3D 0;=0A=
		os_hideResults(r);=0A=
	} else{		=0A=
		try {=0A=
			var p =3D eval('('+text+')'); // simple json parse, could do a safer =
one=0A=
			if(p.length<2 || p[1].length =3D=3D 0){=0A=
				r.results =3D null;=0A=
				r.resultCount =3D 0;=0A=
				os_hideResults(r);=0A=
				return;=0A=
			}		=0A=
			var c =3D document.getElementById(r.container);=0A=
			if(c =3D=3D null)=0A=
				c =3D os_createContainer(r);			=0A=
			c.innerHTML =3D os_createResultTable(r,p[1]);=0A=
			// init container table sizes=0A=
			var t =3D document.getElementById(r.resultTable);		=0A=
			r.containerTotal =3D t.offsetHeight;	=0A=
			r.containerRow =3D t.offsetHeight / r.resultCount;=0A=
			os_trimResultText(r);				=0A=
			os_showResults(r);=0A=
		} catch(e){=0A=
			// bad response from server or such=0A=
			os_hideResults(r);			=0A=
			os_cache[cacheKey] =3D null;=0A=
		}=0A=
	}	=0A=
}=0A=
=0A=
/** Create the result table to be placed in the container div */=0A=
function os_createResultTable(r, results){=0A=
	var c =3D document.getElementById(r.container);=0A=
	var width =3D os_operaWidthFix(c.offsetWidth);	=0A=
	var html =3D "<table class=3D\"os-suggest-results\" =
id=3D\""+r.resultTable+"\" style=3D\"width: "+width+"px;\">";=0A=
	r.results =3D new Array();=0A=
	r.resultCount =3D results.length;=0A=
	for(i=3D0;i<results.length;i++){=0A=
		var title =3D os_decodeValue(results[i]);=0A=
		r.results[i] =3D title;=0A=
		html +=3D "<tr><td class=3D\"os-suggest-result\" =
id=3D\""+r.resultTable+i+"\"><span =
id=3D\""+r.resultText+i+"\">"+title+"</span></td></tr>";=0A=
	}=0A=
	html+=3D"</table>"=0A=
	return html;=0A=
}=0A=
=0A=
/** Fetch namespaces from checkboxes or hidden fields in the search form,=0A=
    if none defined use wgSearchNamespaces global */=0A=
function os_getNamespaces(r){	=0A=
	var namespaces =3D "";=0A=
	var elements =3D document.forms[r.searchform].elements;=0A=
	for(i=3D0; i < elements.length; i++){=0A=
		var name =3D elements[i].name;=0A=
		if(typeof name !=3D 'undefined' && name.length > 2 =0A=
		&& name[0]=3D=3D'n' && name[1]=3D=3D's' =0A=
		&& ((elements[i].type=3D=3D'checkbox' && elements[i].checked) =0A=
		 	|| (elements[i].type=3D=3D'hidden' && elements[i].value=3D=3D"1")) ){=0A=
			if(namespaces!=3D"")=0A=
				namespaces+=3D"|";=0A=
			namespaces+=3Dname.substring(2);=0A=
		}=0A=
	}=0A=
	if(namespaces =3D=3D "")=0A=
		namespaces =3D wgSearchNamespaces.join("|");=0A=
	return namespaces;=0A=
}=0A=
=0A=
/** Update results if user hasn't already typed something else */=0A=
function os_updateIfRelevant(r, query, text, cacheKey){=0A=
	var t =3D document.getElementById(r.searchbox);=0A=
	if(t !=3D null && t.value =3D=3D query){ // check if response is still =
relevant	        			=0A=
		os_updateResults(r, query, text, cacheKey);=0A=
	}=0A=
	r.query =3D query;=0A=
}=0A=
=0A=
/** Fetch results after some timeout */=0A=
function os_delayedFetch(){=0A=
	if(os_timer =3D=3D null)=0A=
		return;=0A=
	var r =3D os_timer.r;=0A=
	var query =3D os_timer.query;=0A=
	os_timer =3D null;=0A=
	var path =3D =
wgMWSuggestTemplate.replace("{namespaces}",os_getNamespaces(r))=0A=
							  	  .replace("{dbname}",wgDBname)=0A=
							  	  .replace("{searchTerms}",os_encodeQuery(query));=0A=
	=0A=
	// try to get from cache, if not fetch using ajax=0A=
	var cached =3D os_cache[path];=0A=
	if(cached !=3D null){=0A=
		os_updateIfRelevant(r, query, cached, path);=0A=
	} else{									  =0A=
		var xmlhttp =3D sajax_init_object();=0A=
		if(xmlhttp){=0A=
			try {			=0A=
				xmlhttp.open("GET", path, true);=0A=
				xmlhttp.onreadystatechange=3Dfunction(){=0A=
		        	if (xmlhttp.readyState=3D=3D4 && typeof os_updateIfRelevant =
=3D=3D 'function') {	        		=0A=
		        		os_updateIfRelevant(r, query, xmlhttp.responseText, path);=0A=
	        		}=0A=
	      		};=0A=
	     		xmlhttp.send(null);     	=0A=
	     	} catch (e) {=0A=
				if (window.location.hostname =3D=3D "localhost") {=0A=
					alert("Your browser blocks XMLHttpRequest to 'localhost', try using =
a real hostname for development/testing.");=0A=
				}=0A=
				throw e;=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/** Init timed update via os_delayedUpdate() */=0A=
function os_fetchResults(r, query, timeout){=0A=
	if(query =3D=3D ""){=0A=
		os_hideResults(r);=0A=
		return;=0A=
	} else if(query =3D=3D r.query)=0A=
		return; // no change=0A=
	=0A=
	os_is_stopped =3D false; // make sure we're running=0A=
	=0A=
	/* var cacheKey =3D wgDBname+":"+query; =0A=
	var cached =3D os_cache[cacheKey];=0A=
	if(cached !=3D null){=0A=
		os_updateResults(r,wgDBname,query,cached);=0A=
		return;=0A=
	} */=0A=
	=0A=
	// cancel any pending fetches=0A=
	if(os_timer !=3D null && os_timer.id !=3D null)=0A=
		clearTimeout(os_timer.id);=0A=
	// schedule delayed fetching of results	=0A=
	if(timeout !=3D 0){=0A=
		os_timer =3D new =
os_Timer(setTimeout("os_delayedFetch()",timeout),r,query);=0A=
	} else{		=0A=
		os_timer =3D new os_Timer(null,r,query);=0A=
		os_delayedFetch(); // do it now!=0A=
	}=0A=
=0A=
}=0A=
/** Change the highlighted row (i.e. suggestion), from position cur to =
next */=0A=
function os_changeHighlight(r, cur, next, updateSearchBox){=0A=
	if (next >=3D r.resultCount)=0A=
		next =3D r.resultCount-1;=0A=
	if (next < -1)=0A=
		next =3D -1;   =0A=
	r.selected =3D next;=0A=
   	if (cur =3D=3D next)=0A=
    	return; // nothing to do.=0A=
    =0A=
    if(cur >=3D 0){=0A=
    	var curRow =3D document.getElementById(r.resultTable + cur);=0A=
    	if(curRow !=3D null)=0A=
    		curRow.className =3D "os-suggest-result";=0A=
    }=0A=
    var newText;=0A=
    if(next >=3D 0){=0A=
    	var nextRow =3D document.getElementById(r.resultTable + next);=0A=
    	if(nextRow !=3D null)=0A=
    		nextRow.className =3D os_HighlightClass();=0A=
    	newText =3D r.results[next];=0A=
    } else=0A=
    	newText =3D r.original;=0A=
    	=0A=
    // adjust the scrollbar if any=0A=
    if(r.containerCount < r.resultCount){=0A=
    	var c =3D document.getElementById(r.container);=0A=
    	var vStart =3D c.scrollTop / r.containerRow;=0A=
    	var vEnd =3D vStart + r.containerCount;=0A=
    	if(next < vStart)=0A=
    		c.scrollTop =3D next * r.containerRow;=0A=
    	else if(next >=3D vEnd)=0A=
    		c.scrollTop =3D (next - r.containerCount + 1) * r.containerRow;=0A=
    }=0A=
    	=0A=
    // update the contents of the search box=0A=
    if(updateSearchBox){=0A=
    	os_updateSearchQuery(r,newText);	=0A=
    }=0A=
}=0A=
=0A=
function os_HighlightClass() {=0A=
	var match =3D navigator.userAgent.match(/AppleWebKit\/(\d+)/);=0A=
	if (match) {=0A=
		var webKitVersion =3D parseInt(match[1]);=0A=
		if (webKitVersion < 523) {=0A=
			// CSS system highlight colors broken on old Safari=0A=
			// https://bugs.webkit.org/show_bug.cgi?id=3D6129=0A=
			// Safari 3.0.4, 3.1 known ok=0A=
			return "os-suggest-result-hl-webkit";=0A=
		}=0A=
	}=0A=
	return "os-suggest-result-hl";=0A=
}=0A=
=0A=
function os_updateSearchQuery(r,newText){=0A=
	document.getElementById(r.searchbox).value =3D newText;=0A=
    r.query =3D newText;=0A=
}=0A=
=0A=
/** Find event target */=0A=
function os_getTarget(e){=0A=
	if (!e) var e =3D window.event;=0A=
	if (e.target) return e.target;=0A=
	else if (e.srcElement) return e.srcElement;=0A=
	else return null;=0A=
}=0A=
=0A=
=0A=
=0A=
/********************=0A=
 *  Keyboard events =0A=
 ********************/ =0A=
=0A=
/** Event handler that will fetch results on keyup */=0A=
function os_eventKeyup(e){=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[targ.id];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
		=0A=
	// some browsers won't generate keypressed for arrow keys, catch it =0A=
	if(os_keypressed_count =3D=3D 0){=0A=
		os_processKey(r,os_cur_keypressed,targ);=0A=
	}=0A=
	var query =3D targ.value;=0A=
	os_fetchResults(r,query,os_search_timeout);=0A=
}=0A=
=0A=
/** catch arrows up/down and escape to hide the suggestions */=0A=
function os_processKey(r,keypressed,targ){=0A=
	if (keypressed =3D=3D 40){ // Arrow Down=0A=
    	if (r.visible) {      		=0A=
      		os_changeHighlight(r, r.selected, r.selected+1, true);      		=0A=
    	} else if(os_timer =3D=3D null){=0A=
    		// user wants to get suggestions now=0A=
    		r.query =3D "";=0A=
			os_fetchResults(r,targ.value,0);=0A=
    	}=0A=
  	} else if (keypressed =3D=3D 38){ // Arrow Up=0A=
  		if (r.visible){=0A=
  			os_changeHighlight(r, r.selected, r.selected-1, true);=0A=
  		}=0A=
  	} else if(keypressed =3D=3D 27){ // Escape=0A=
  		document.getElementById(r.searchbox).value =3D r.original;=0A=
  		r.query =3D r.original;=0A=
  		os_hideResults(r);=0A=
  	} else if(r.query !=3D document.getElementById(r.searchbox).value){=0A=
  		// os_hideResults(r); // don't show old suggestions=0A=
  	}=0A=
}=0A=
=0A=
/** When keys is held down use a timer to output regular events */=0A=
function os_eventKeypress(e){	=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[targ.id];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
	=0A=
	var keypressed =3D os_cur_keypressed;=0A=
	if(keypressed =3D=3D 38 || keypressed =3D=3D 40){=0A=
		var d =3D new Date()=0A=
		var now =3D d.getTime();=0A=
		if(now - os_last_keypress < 120){=0A=
			os_last_keypress =3D now;=0A=
			return;=0A=
		}=0A=
	}=0A=
	=0A=
	os_keypressed_count++;=0A=
	os_processKey(r,keypressed,targ);=0A=
}=0A=
=0A=
/** Catch the key code (Firefox bug)  */=0A=
function os_eventKeydown(e){=0A=
	if (!e) var e =3D window.event;=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[targ.id];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
			=0A=
	os_mouse_moved =3D false;=0A=
		=0A=
	if(os_first_focus){=0A=
		// firefox bug, focus&defocus to make autocomplete=3Doff valid=0A=
		targ.blur(); targ.focus();=0A=
		os_first_focus =3D false;=0A=
	}=0A=
=0A=
	os_cur_keypressed =3D (window.Event) ? e.which : e.keyCode;=0A=
	os_last_keypress =3D 0;=0A=
	os_keypressed_count =3D 0;=0A=
}=0A=
=0A=
/** Event: loss of focus of input box */=0A=
function os_eventBlur(e){	=0A=
	if(os_first_focus)=0A=
		return; // we are focusing/defocusing=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[targ.id];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
	if(!os_mouse_pressed)	=0A=
		os_hideResults(r);=0A=
}=0A=
=0A=
/** Event: focus (catch only when stopped) */=0A=
function os_eventFocus(e){	=0A=
	if(os_first_focus)=0A=
		return; // we are focusing/defocusing=0A=
}=0A=
=0A=
=0A=
=0A=
/********************=0A=
 *  Mouse events =0A=
 ********************/ =0A=
=0A=
/** Mouse over the container */=0A=
function os_eventMouseover(srcId, e){=0A=
	var targ =3D os_getTarget(e);	=0A=
	var r =3D os_map[srcId];=0A=
	if(r =3D=3D null || !os_mouse_moved)=0A=
		return; // not our event=0A=
	var num =3D os_getNumberSuffix(targ.id);=0A=
	if(num >=3D 0)=0A=
		os_changeHighlight(r,r.selected,num,false);=0A=
					=0A=
}=0A=
=0A=
/* Get row where the event occured (from its id) */=0A=
function os_getNumberSuffix(id){=0A=
	var num =3D id.substring(id.length-2);=0A=
	if( ! (num.charAt(0) >=3D '0' && num.charAt(0) <=3D '9') )=0A=
		num =3D num.substring(1);=0A=
	if(os_isNumber(num))=0A=
		return parseInt(num);=0A=
	else=0A=
		return -1;=0A=
}=0A=
=0A=
/** Save mouse move as last action */=0A=
function os_eventMousemove(srcId, e){=0A=
	os_mouse_moved =3D true;=0A=
}=0A=
=0A=
/** Mouse button held down, register possible click  */=0A=
function os_eventMousedown(srcId, e){=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[srcId];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
	var num =3D os_getNumberSuffix(targ.id);=0A=
	=0A=
	os_mouse_pressed =3D true;=0A=
	if(num >=3D 0){=0A=
		os_mouse_num =3D num;=0A=
		// os_updateSearchQuery(r,r.results[num]);=0A=
	}=0A=
	// keep the focus on the search field=0A=
	document.getElementById(r.searchbox).focus();=0A=
	=0A=
	return false; // prevents selection=0A=
}=0A=
=0A=
/** Mouse button released, check for click on some row */=0A=
function os_eventMouseup(srcId, e){=0A=
	var targ =3D os_getTarget(e);=0A=
	var r =3D os_map[srcId];=0A=
	if(r =3D=3D null)=0A=
		return; // not our event=0A=
	var num =3D os_getNumberSuffix(targ.id);=0A=
		=0A=
	if(num >=3D 0 && os_mouse_num =3D=3D num){=0A=
		os_updateSearchQuery(r,r.results[num]);=0A=
		os_hideResults(r);=0A=
		document.getElementById(r.searchform).submit();=0A=
	}=0A=
	os_mouse_pressed =3D false;=0A=
	// keep the focus on the search field=0A=
	document.getElementById(r.searchbox).focus();=0A=
}=0A=
=0A=
/** Check if x is a valid integer */=0A=
function os_isNumber(x){=0A=
	if(x =3D=3D "" || isNaN(x))=0A=
		return false;=0A=
	for(var i=3D0;i<x.length;i++){=0A=
		var c =3D x.charAt(i);=0A=
		if( ! (c >=3D '0' && c <=3D '9') )=0A=
			return false;=0A=
	}=0A=
	return true;=0A=
}=0A=
=0A=
=0A=
/** When the form is submitted hide everything, cancel updates... */=0A=
function os_eventOnsubmit(e){=0A=
	var targ =3D os_getTarget(e);=0A=
=0A=
	os_is_stopped =3D true;=0A=
	// kill timed requests=0A=
	if(os_timer !=3D null && os_timer.id !=3D null){=0A=
		clearTimeout(os_timer.id);=0A=
		os_timer =3D null;=0A=
	}=0A=
	// Hide all suggestions=0A=
	for(i=3D0;i<os_autoload_inputs.length;i++){=0A=
		var r =3D os_map[os_autoload_inputs[i]];=0A=
		if(r !=3D null){=0A=
			var b =3D document.getElementById(r.searchform);=0A=
			if(b !=3D null && b =3D=3D targ){ =0A=
				// set query value so the handler won't try to fetch additional =
results=0A=
				r.query =3D document.getElementById(r.searchbox).value;=0A=
			}			=0A=
			os_hideResults(r);=0A=
		}=0A=
	}=0A=
	return true;=0A=
}=0A=
=0A=
function os_hookEvent(element, hookName, hookFunct) {=0A=
	if (element.addEventListener) {=0A=
		element.addEventListener(hookName, hookFunct, false);=0A=
	} else if (window.attachEvent) {=0A=
		element.attachEvent("on" + hookName, hookFunct);=0A=
	}=0A=
}=0A=
=0A=
/** Init Result objects and event handlers */=0A=
function os_initHandlers(name, formname, element){=0A=
	var r =3D new os_Results(name, formname);	=0A=
	// event handler=0A=
	os_hookEvent(element, "keyup", function(event) { os_eventKeyup(event); =
});=0A=
	os_hookEvent(element, "keydown", function(event) { =
os_eventKeydown(event); });=0A=
	os_hookEvent(element, "keypress", function(event) { =
os_eventKeypress(event); });=0A=
	os_hookEvent(element, "blur", function(event) { os_eventBlur(event); });=0A=
	os_hookEvent(element, "focus", function(event) { os_eventFocus(event); =
});=0A=
	element.setAttribute("autocomplete","off");=0A=
	// stopping handler=0A=
	os_hookEvent(document.getElementById(formname), "onsubmit", =
function(event){ return os_eventOnsubmit(event); });=0A=
	os_map[name] =3D r; =0A=
	// toggle link=0A=
	if(document.getElementById(r.toggle) =3D=3D null){=0A=
		// TODO: disable this while we figure out a way for this to work in =
all browsers =0A=
		/* if(name=3D=3D'searchInput'){=0A=
			// special case: place above the main search box=0A=
			var t =3D os_createToggle(r,"os-suggest-toggle");=0A=
			var searchBody =3D document.getElementById('searchBody');=0A=
			var first =3D =
searchBody.parentNode.firstChild.nextSibling.appendChild(t);=0A=
		} else{=0A=
			// default: place below search box to the right=0A=
			var t =3D os_createToggle(r,"os-suggest-toggle-def");=0A=
			var top =3D element.offsetTop + element.offsetHeight;=0A=
			var left =3D element.offsetLeft + element.offsetWidth;=0A=
			t.style.position =3D "absolute";=0A=
			t.style.top =3D top + "px";=0A=
			t.style.left =3D left + "px";=0A=
			element.parentNode.appendChild(t);=0A=
			// only now width gets calculated, shift right=0A=
			left -=3D t.offsetWidth;=0A=
			t.style.left =3D left + "px";=0A=
			t.style.visibility =3D "visible";=0A=
		} */=0A=
	}=0A=
	=0A=
}=0A=
=0A=
/** Return the span element that contains the toggle link */=0A=
function os_createToggle(r,className){=0A=
	var t =3D document.createElement("span");=0A=
	t.className =3D className;=0A=
	t.setAttribute("id", r.toggle);=0A=
	var link =3D document.createElement("a");=0A=
	link.setAttribute("href","javascript:void(0);");=0A=
	link.onclick =3D function(){ os_toggle(r.searchbox,r.searchform) };=0A=
	var msg =3D document.createTextNode(wgMWSuggestMessages[0]);=0A=
	link.appendChild(msg);=0A=
	t.appendChild(link);=0A=
	return t; 	=0A=
}=0A=
=0A=
/** Call when user clicks on some of the toggle links */=0A=
function os_toggle(inputId,formName){=0A=
	r =3D os_map[inputId];=0A=
	var msg =3D '';=0A=
	if(r =3D=3D null){=0A=
		os_enableSuggestionsOn(inputId,formName);=0A=
		r =3D os_map[inputId];=0A=
		msg =3D wgMWSuggestMessages[0];		=0A=
	} else{=0A=
		os_disableSuggestionsOn(inputId,formName);=0A=
		msg =3D wgMWSuggestMessages[1];=0A=
	}=0A=
	// change message=0A=
	var link =3D document.getElementById(r.toggle).firstChild;=0A=
	link.replaceChild(document.createTextNode(msg),link.firstChild);=0A=
}=0A=
=0A=
/** Call this to enable suggestions on input (id=3DinputId), on a form =
(name=3DformName) */=0A=
function os_enableSuggestionsOn(inputId, formName){=0A=
	os_initHandlers( inputId, formName, document.getElementById(inputId) );=0A=
}=0A=
=0A=
/** Call this to disable suggestios on input box (id=3DinputId) */=0A=
function os_disableSuggestionsOn(inputId){=0A=
	r =3D os_map[inputId];=0A=
	if(r !=3D null){=0A=
		// cancel/hide results=0A=
		os_timer =3D null;=0A=
		os_hideResults(r);=0A=
		// turn autocomplete on !=0A=
		document.getElementById(inputId).setAttribute("autocomplete","on");=0A=
		// remove descriptor	=0A=
		os_map[inputId] =3D null;=0A=
	}=0A=
}=0A=
=0A=
/** Initialization, call upon page onload */=0A=
function os_MWSuggestInit() {=0A=
	for(i=3D0;i<os_autoload_inputs.length;i++){=0A=
		var id =3D os_autoload_inputs[i];=0A=
		var form =3D os_autoload_forms[i];=0A=
		element =3D document.getElementById( id );=0A=
		if(element !=3D null)=0A=
			os_initHandlers(id,form,element);=0A=
	}	=0A=
}=0A=
=0A=
hookEvent("load", os_MWSuggestInit);=0A=

------=_NextPart_000_0099_01C8ADDC.29728300
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://en.wikipedia.org/w/index.php?title=-&action=raw&gen=js&useskin=monobook

/* generated javascript */=0A=
var skin =3D 'monobook';=0A=
var stylepath =3D '/skins-1.5';=0A=
=0A=
/* MediaWiki:Common.js */=0A=
/** Import module =
*************************************************************=0A=
  *=0A=
  *  Description: Includes a raw wiki page as javascript or CSS, =0A=
  *               used for including user made modules.=0A=
  *  Maintainers: [[User:AzaToth]]=0A=
  */=0A=
 importedScripts =3D {}; // object keeping track of included scripts, so =
a script ain't included twice=0A=
 function importScript( page ) {=0A=
     if( importedScripts[page] ) {=0A=
         return;=0A=
     }=0A=
     importedScripts[page] =3D true;=0A=
     var url =3D wgScriptPath=0A=
             + '/index.php?title=3D'=0A=
             + encodeURIComponent( page.replace( / /g, '_' ) )=0A=
             + '&action=3Draw&ctype=3Dtext/javascript';=0A=
     var scriptElem =3D document.createElement( 'script' );=0A=
     scriptElem.setAttribute( 'src' , url );=0A=
     scriptElem.setAttribute( 'type' , 'text/javascript' );=0A=
     document.getElementsByTagName( 'head' )[0].appendChild( scriptElem =
);=0A=
 }=0A=
 =0A=
 function importStylesheet( page ) {=0A=
     var sheet =3D '@import "'=0A=
               + wgScriptPath=0A=
               + '/index.php?title=3D'=0A=
               + encodeURIComponent( page.replace( / /g, '_' ) )=0A=
               + '&action=3Draw&ctype=3Dtext/css";'=0A=
     var styleElem =3D document.createElement( 'style' );=0A=
     styleElem.setAttribute( 'type' , 'text/css' );=0A=
     styleElem.appendChild( document.createTextNode( sheet ) );=0A=
     document.getElementsByTagName( 'head' )[0].appendChild( styleElem );=0A=
 }=0A=
=0A=
 /* Test if an element has a certain class =
**************************************=0A=
  *=0A=
  * Description: Uses regular expressions and caching for better =
performance.=0A=
  * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]=0A=
  */=0A=
 =0A=
 var hasClass =3D (function () {=0A=
     var reCache =3D {};=0A=
     return function (element, className) {=0A=
         return (reCache[className] ? reCache[className] : =
(reCache[className] =3D new RegExp("(?:\\s|^)" + className + =
"(?:\\s|$)"))).test(element.className);=0A=
     };=0A=
 })();=0A=
=0A=
 /** Internet Explorer bug fix =
**************************************************=0A=
  *=0A=
  *  Description: Fixes IE horizontal scrollbar bug=0A=
  *  Maintainers: [[User:Tom-]]?=0A=
  */=0A=
 =0A=
 if (navigator.appName =3D=3D "Microsoft Internet Explorer" && =
document.compatMode =3D=3D "CSS1Compat")=0A=
 {=0A=
   var oldWidth;=0A=
   var docEl =3D document.documentElement;=0A=
 =0A=
   function fixIEScroll()=0A=
   {=0A=
     if (!oldWidth || docEl.clientWidth > oldWidth)=0A=
       doFixIEScroll();=0A=
     else=0A=
       setTimeout(doFixIEScroll, 1);=0A=
   =0A=
     oldWidth =3D docEl.clientWidth;=0A=
   }=0A=
 =0A=
   function doFixIEScroll() {=0A=
     docEl.style.overflowX =3D (docEl.scrollWidth - docEl.clientWidth < =
4) ? "hidden" : "";=0A=
   }=0A=
 =0A=
   document.attachEvent("onreadystatechange", fixIEScroll);=0A=
   attachEvent("onresize", fixIEScroll);=0A=
 }=0A=
=0A=
 /** Interwiki links to featured articles =
***************************************=0A=
  *=0A=
  *  Description: Highlights interwiki links to featured articles (or=0A=
  *               equivalents) by changing the bullet before the =
interwiki link=0A=
  *               into a star.=0A=
  *  Maintainers: [[User:R. Koot]]=0A=
  */=0A=
 =0A=
 function LinkFA() =0A=
 {=0A=
     if ( document.getElementById( "p-lang" ) ) {=0A=
         var InterwikiLinks =3D document.getElementById( "p-lang" =
).getElementsByTagName( "li" );=0A=
 =0A=
         for ( var i =3D 0; i < InterwikiLinks.length; i++ ) {=0A=
             if ( document.getElementById( InterwikiLinks[i].className + =
"-fa" ) ) {=0A=
                 InterwikiLinks[i].className +=3D " FA"=0A=
                 InterwikiLinks[i].title =3D "This is a featured article =
in another language.";=0A=
             }=0A=
         }=0A=
     }=0A=
 }=0A=
 =0A=
 addOnloadHook( LinkFA );=0A=
=0A=
 /** Collapsible tables =
*********************************************************=0A=
  *=0A=
  *  Description: Allows tables to be collapsed, showing only the =
header. See=0A=
  *               [[Wikipedia:NavFrame]].=0A=
  *  Maintainers: [[User:R. Koot]]=0A=
  */=0A=
 =0A=
 var autoCollapse =3D 2;=0A=
 var collapseCaption =3D "hide";=0A=
 var expandCaption =3D "show";=0A=
 =0A=
 function collapseTable( tableIndex )=0A=
 {=0A=
     var Button =3D document.getElementById( "collapseButton" + =
tableIndex );=0A=
     var Table =3D document.getElementById( "collapsibleTable" + =
tableIndex );=0A=
 =0A=
     if ( !Table || !Button ) {=0A=
         return false;=0A=
     }=0A=
 =0A=
     var Rows =3D Table.rows;=0A=
 =0A=
     if ( Button.firstChild.data =3D=3D collapseCaption ) {=0A=
         for ( var i =3D 1; i < Rows.length; i++ ) {=0A=
             Rows[i].style.display =3D "none";=0A=
         }=0A=
         Button.firstChild.data =3D expandCaption;=0A=
     } else {=0A=
         for ( var i =3D 1; i < Rows.length; i++ ) {=0A=
             Rows[i].style.display =3D Rows[0].style.display;=0A=
         }=0A=
         Button.firstChild.data =3D collapseCaption;=0A=
     }=0A=
 }=0A=
 =0A=
 function createCollapseButtons()=0A=
 {=0A=
     var tableIndex =3D 0;=0A=
     var NavigationBoxes =3D new Object();=0A=
     var Tables =3D document.getElementsByTagName( "table" );=0A=
 =0A=
     for ( var i =3D 0; i < Tables.length; i++ ) {=0A=
         if ( hasClass( Tables[i], "collapsible" ) ) {=0A=
 =0A=
             /* only add button and increment count if there is a header =
row to work with */=0A=
             var HeaderRow =3D Tables[i].getElementsByTagName( "tr" )[0];=0A=
             if (!HeaderRow) continue;=0A=
             var Header =3D HeaderRow.getElementsByTagName( "th" )[0];=0A=
             if (!Header) continue;=0A=
 =0A=
             NavigationBoxes[ tableIndex ] =3D Tables[i];=0A=
             Tables[i].setAttribute( "id", "collapsibleTable" + =
tableIndex );=0A=
 =0A=
             var Button     =3D document.createElement( "span" );=0A=
             var ButtonLink =3D document.createElement( "a" );=0A=
             var ButtonText =3D document.createTextNode( collapseCaption =
);=0A=
 =0A=
             Button.style.styleFloat =3D "right";=0A=
             Button.style.cssFloat =3D "right";=0A=
             Button.style.fontWeight =3D "normal";=0A=
             Button.style.textAlign =3D "right";=0A=
             Button.style.width =3D "6em";=0A=
 =0A=
             ButtonLink.style.color =3D Header.style.color;=0A=
             ButtonLink.setAttribute( "id", "collapseButton" + =
tableIndex );=0A=
             ButtonLink.setAttribute( "href", =
"javascript:collapseTable(" + tableIndex + ");" );=0A=
             ButtonLink.appendChild( ButtonText );=0A=
 =0A=
             Button.appendChild( document.createTextNode( "[" ) );=0A=
             Button.appendChild( ButtonLink );=0A=
             Button.appendChild( document.createTextNode( "]" ) );=0A=
 =0A=
             Header.insertBefore( Button, Header.childNodes[0] );=0A=
             tableIndex++;=0A=
         }=0A=
     }=0A=
 =0A=
     for ( var i =3D 0;  i < tableIndex; i++ ) {=0A=
         if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( =
tableIndex >=3D autoCollapse && hasClass( NavigationBoxes[i], =
"autocollapse" ) ) ) {=0A=
             collapseTable( i );=0A=
         }=0A=
     }=0A=
 }=0A=
 =0A=
 addOnloadHook( createCollapseButtons );=0A=
=0A=
 /** Dynamic Navigation Bars (experimental) =
*************************************=0A=
  *=0A=
  *  Description: See [[Wikipedia:NavFrame]].=0A=
  *  Maintainers: UNMAINTAINED=0A=
  */=0A=
 =0A=
  // set up the words in your language=0A=
  var NavigationBarHide =3D '[' + collapseCaption + ']';=0A=
  var NavigationBarShow =3D '[' + expandCaption + ']';=0A=
 =0A=
  // shows and hides content and picture (if available) of navigation =
bars=0A=
  // Parameters:=0A=
  //     indexNavigationBar: the index of navigation bar to be toggled=0A=
  function toggleNavigationBar(indexNavigationBar)=0A=
  {=0A=
     var NavToggle =3D document.getElementById("NavToggle" + =
indexNavigationBar);=0A=
     var NavFrame =3D document.getElementById("NavFrame" + =
indexNavigationBar);=0A=
 =0A=
     if (!NavFrame || !NavToggle) {=0A=
         return false;=0A=
     }=0A=
 =0A=
     // if shown now=0A=
     if (NavToggle.firstChild.data =3D=3D NavigationBarHide) {=0A=
         for (=0A=
                 var NavChild =3D NavFrame.firstChild;=0A=
                 NavChild !=3D null;=0A=
                 NavChild =3D NavChild.nextSibling=0A=
             ) {=0A=
             if ( hasClass( NavChild, 'NavPic' ) ) {=0A=
                 NavChild.style.display =3D 'none';=0A=
             }=0A=
             if ( hasClass( NavChild, 'NavContent') ) {=0A=
                 NavChild.style.display =3D 'none';=0A=
             }=0A=
         }=0A=
     NavToggle.firstChild.data =3D NavigationBarShow;=0A=
 =0A=
     // if hidden now=0A=
     } else if (NavToggle.firstChild.data =3D=3D NavigationBarShow) {=0A=
         for (=0A=
                 var NavChild =3D NavFrame.firstChild;=0A=
                 NavChild !=3D null;=0A=
                 NavChild =3D NavChild.nextSibling=0A=
             ) {=0A=
             if (hasClass(NavChild, 'NavPic')) {=0A=
                 NavChild.style.display =3D 'block';=0A=
             }=0A=
             if (hasClass(NavChild, 'NavContent')) {=0A=
                 NavChild.style.display =3D 'block';=0A=
             }=0A=
         }=0A=
     NavToggle.firstChild.data =3D NavigationBarHide;=0A=
     }=0A=
  }=0A=
 =0A=
  // adds show/hide-button to navigation bars=0A=
  function createNavigationBarToggleButton()=0A=
  {=0A=
     var indexNavigationBar =3D 0;=0A=
     // iterate over all < div >-elements =0A=
     var divs =3D document.getElementsByTagName("div");=0A=
     for(=0A=
             var i=3D0; =0A=
             NavFrame =3D divs[i]; =0A=
             i++=0A=
         ) {=0A=
         // if found a navigation bar=0A=
         if (hasClass(NavFrame, "NavFrame")) {=0A=
 =0A=
             indexNavigationBar++;=0A=
             var NavToggle =3D document.createElement("a");=0A=
             NavToggle.className =3D 'NavToggle';=0A=
             NavToggle.setAttribute('id', 'NavToggle' + =
indexNavigationBar);=0A=
             NavToggle.setAttribute('href', =
'javascript:toggleNavigationBar(' + indexNavigationBar + ');');=0A=
 =0A=
             var NavToggleText =3D =
document.createTextNode(NavigationBarHide);=0A=
             for (=0A=
                  var NavChild =3D NavFrame.firstChild;=0A=
                  NavChild !=3D null;=0A=
                  NavChild =3D NavChild.nextSibling=0A=
                 ) {=0A=
                 if ( hasClass( NavChild, 'NavPic' ) || hasClass( =
NavChild, 'NavContent' ) ) {=0A=
                     if (NavChild.style.display =3D=3D 'none') {=0A=
                         NavToggleText =3D =
document.createTextNode(NavigationBarShow);=0A=
                         break;=0A=
                     }=0A=
                 }=0A=
             }=0A=
 =0A=
             NavToggle.appendChild(NavToggleText);=0A=
             // Find the NavHead and attach the toggle link (Must be =
this complicated because Moz's firstChild handling is borked)=0A=
             for(=0A=
               var j=3D0; =0A=
               j < NavFrame.childNodes.length; =0A=
               j++=0A=
             ) {=0A=
               if (hasClass(NavFrame.childNodes[j], "NavHead")) {=0A=
                 NavFrame.childNodes[j].appendChild(NavToggle);=0A=
               }=0A=
             }=0A=
             NavFrame.setAttribute('id', 'NavFrame' + =
indexNavigationBar);=0A=
         }=0A=
     }=0A=
  }=0A=
 =0A=
  addOnloadHook( createNavigationBarToggleButton );=0A=
=0A=
 /** Main Page layout fixes =
*********************************************************=0A=
  *=0A=
  *  Description:        Various layout fixes for the main page, =
including an=0A=
  *                      additional link to the complete list of =
languages available=0A=
  *                      and the renaming of the 'Article' to to 'Main =
Page'.=0A=
  *  Maintainers:        [[User:AzaToth]], [[User:R. Koot]], [[User:Alex =
Smotrov]]=0A=
  */=0A=
 =0A=
 function mainPageRenameNamespaceTab() {=0A=
     try {=0A=
         var Node =3D document.getElementById( 'ca-nstab-main' =
).firstChild;=0A=
         if ( Node.textContent ) {      // Per DOM Level 3=0A=
             Node.textContent =3D 'Main Page';=0A=
         } else if ( Node.innerText ) { // IE doesn't handle .textContent=0A=
             Node.innerText =3D 'Main Page';=0A=
         } else {                       // Fallback=0A=
             Node.replaceChild( Node.firstChild, =
document.createTextNode( 'Main Page' ) ); =0A=
         }=0A=
     } catch(e) {=0A=
         // bailing out!=0A=
     }=0A=
 }=0A=
 =0A=
 if ( wgTitle =3D=3D 'Main Page' && ( wgNamespaceNumber =3D=3D 0 || =
wgNamespaceNumber =3D=3D 1 ) ) {=0A=
        addOnloadHook( mainPageRenameNamespaceTab );=0A=
 }=0A=
 =0A=
 if ( wgTitle =3D=3D 'Main Page' && wgNamespaceNumber =3D=3D 0 ) {=0A=
        addOnloadHook( mainPageAppendCompleteListLink );=0A=
 }=0A=
 =0A=
 function mainPageAppendCompleteListLink() {=0A=
     addPortletLink('p-lang', =
'http://meta.wikimedia.org/wiki/List_of_Wikipedias', =0A=
     'Complete list', 'interwiki-completelist', 'Complete list of =
Wikipedias')=0A=
 }=0A=
=0A=
 /** Extra toolbar options =
******************************************************=0A=
  *=0A=
  *  Description: UNDOCUMENTED=0A=
  *  Maintainers: [[User:MarkS]]?, [[User:Voice of All]], [[User:R. =
Koot]]=0A=
  */=0A=
 =0A=
 //This is a modified copy of a script by User:MarkS for extra features =
added by User:Voice of All.=0A=
 // This is based on the original code on Wikipedia:Tools/Editing tools=0A=
 // To disable this script, add <code>mwCustomEditButtons =3D [];<code> =
to [[Special:Mypage/monobook.js]]=0A=
 =0A=
 if (mwCustomEditButtons) {=0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png",=0A=
     "speedTip": "Redirect",=0A=
     "tagOpen": "#REDIRECT [[",=0A=
     "tagClose": "]]",=0A=
     "sampleText": "Insert text"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png",=0A=
     "speedTip": "Strike",=0A=
     "tagOpen": "<s>",=0A=
     "tagClose": "</s>",=0A=
     "sampleText": "Strike-through text"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png",=0A=
     "speedTip": "Line break",=0A=
     "tagOpen": "<br />",=0A=
     "tagClose": "",=0A=
     "sampleText": ""};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png",=0A=
     "speedTip": "Superscript",=0A=
     "tagOpen": "<sup>",=0A=
     "tagClose": "</sup>",=0A=
     "sampleText": "Superscript text"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png",=0A=
     "speedTip": "Subscript",=0A=
     "tagOpen": "<sub>",=0A=
     "tagClose": "</sub>",=0A=
     "sampleText": "Subscript text"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/5/58/Button_small.png",=0A=
     "speedTip": "Small",=0A=
     "tagOpen": "<small>",=0A=
     "tagClose": "</small>",=0A=
     "sampleText": "Small Text"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png",=0A=
     "speedTip": "Insert hidden Comment",=0A=
     "tagOpen": "<!-- ",=0A=
     "tagClose": " -->",=0A=
     "sampleText": "Comment"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png",=0A=
     "speedTip": "Insert a picture gallery",=0A=
     "tagOpen": "\n<gallery>\n",=0A=
     "tagClose": "\n</gallery>",=0A=
     "sampleText": =
"Image:Example.jpg|Caption1\nImage:Example.jpg|Caption2"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",=0A=
     "speedTip": "Insert block of quoted text",=0A=
     "tagOpen": "<blockquote>\n",=0A=
     "tagClose": "\n</blockquote>",=0A=
     "sampleText": "Block quote"};=0A=
 =0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png",=0A=
     "speedTip": "Insert a table",=0A=
     "tagOpen": '{| class=3D"wikitable"\n|-\n',=0A=
     "tagClose": "\n|}",=0A=
     "sampleText": "! header 1\n! header 2\n! header 3\n|-\n| row 1, =
cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, =
cell 2\n| row 2, cell 3"};=0A=
=0A=
   mwCustomEditButtons[mwCustomEditButtons.length] =3D {=0A=
     "imageFile": =
"http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png",=0A=
     "speedTip": "Insert a reference",=0A=
     "tagOpen": "<ref>",=0A=
     "tagClose": "</ref>",=0A=
     "sampleText": "Insert footnote text here"};=0A=
=0A=
 }=0A=
 =0A=
 /*</nowiki>*/=0A=
=0A=
 /** pageview counter =
***********************************************************=0A=
  *=0A=
  *  Description: Please talk to de:User:LeonWeber before changing =
anything or =0A=
  *               if there are any issues with that.=0A=
  *  Maintainers: [[:de:User:LeonWeber]]?=0A=
  */=0A=
  =0A=
  // this should be adjusted to a good value.=0A=
  // BE CAREFUL, you will break zedler if it's too low!=0A=
  // And then DaB. will kill Leon :-(=0A=
  var disable_counter =3D 0;=0A=
  var counter_factor =3D 6000;=0A=
  =0A=
  function pgcounter_setup()=0A=
  {=0A=
  	if(disable_counter =3D=3D 0)=0A=
  	{=0A=
  		var url =3D window.location.href;=0A=
  		if(Math.floor(Math.random()*counter_factor)=3D=3D42)  // the =
probability thing=0A=
   		{=0A=
   			if(wgIsArticle=3D=3Dtrue || wgArticleId=3D=3D0) // do not count =
history pages etc.=0A=
  			{=0A=
  				var pgcountNs =3D wgCanonicalNamespace;=0A=
  				if(wgCanonicalNamespace=3D=3D"")=0A=
  				{=0A=
  					pgcountNs =3D "0";=0A=
  				}=0A=
   				var cnt_url =3D "http://pgcount.wikimedia.de/index.png?ns=3D" + =
pgcountNs + "&title=3D" + encodeURI(wgTitle) + "&factor=3D" + =
counter_factor +"&wiki=3Denwiki";=0A=
  				var img =3D new Image(); =0A=
  				img.src =3D cnt_url;=0A=
  			}=0A=
  		}=0A=
  	}=0A=
  }=0A=
  // Do not use aOnloadFunctions[aOnloadFunctions.length] =3D =
pgcounter_setup;, some browsers don't like that.=0A=
  pgcounter_setup();=0A=
=0A=
 /** "Technical restrictions" title fix =
*****************************************=0A=
 *=0A=
 * Description:=0A=
 * Maintainers: User:Interiot, User:Mets501, User:Freakofnurture=0A=
 */=0A=
 //=0A=
 // For pages that have something like Template:Lowercase, replace the =
title, but only if it is cut-and-pasteable as a valid wikilink.=0A=
 // (for instance iPod's title is updated. But [[C#]] is not an =
equivalent=0A=
 // wikilink, so [[C Sharp]] doesn't have its main title changed)=0A=
 // Likewise for users who have selected the U.K. date format ("1 =
March") the  =0A=
 // titles of day-of-the-year articles will appear in that style. Users =
with any=0A=
 // other date setting are not affected.=0A=
 //=0A=
 // The function looks for a banner like this: =0A=
 // &lt;div id=3D"RealTitleBanner"&gt;  ... &lt;span =
id=3D"RealTitle"&gt;title&lt;/span&gt; ... &lt;/div&gt;=0A=
 // An element with id=3DDisableRealTitle disables the function.=0A=
 //=0A=
 var disableRealTitle =3D 0; // users can set disableRealTitle =3D 1 =
locally to disable.=0A=
 if (wgIsArticle) { // don't display the RealTitle when editing, since =
it is apparently inconsistent (doesn't show when editing sections, =
doesn't show when not previewing)=0A=
  addOnloadHook(function() {=0A=
    try {=0A=
        var realTitleBanner =3D =
document.getElementById("RealTitleBanner");=0A=
        if (realTitleBanner && =
!document.getElementById("DisableRealTitle") && !disableRealTitle ) {=0A=
            var realTitle =3D document.getElementById("RealTitle");=0A=
            if (realTitle) {=0A=
                var realTitleHTML =3D realTitle.innerHTML;=0A=
                realTitleText =3D pickUpText(realTitle);=0A=
=0A=
                var isPasteable =3D 0;=0A=
                //var containsHTML =3D /</.test(realTitleHTML);    // =
contains ANY HTML=0A=
                var containsTooMuchHTML =3D /</.test( =
realTitleHTML.replace(/<\/?(sub|sup|small|big)>/gi, "") ); // contains =
HTML that will be ignored when cut-n-pasted as a wikilink=0A=
                // calculate whether the title is pasteable=0A=
                var verifyTitle =3D realTitleText.replace(/^ +/, "");    =
   // trim left spaces=0A=
                verifyTitle =3D verifyTitle.charAt(0).toUpperCase() + =
verifyTitle.substring(1, verifyTitle.length);    // uppercase first =
character=0A=
 =0A=
                // if the namespace prefix is there, remove it on our =
verification copy. If it isn't there, add it to the original realValue =
copy.=0A=
                if (wgNamespaceNumber !=3D 0) {=0A=
                    if (wgCanonicalNamespace =3D=3D =
verifyTitle.substr(0, wgCanonicalNamespace.length).replace(/ /g, "_") && =
verifyTitle.charAt(wgCanonicalNamespace.length) =3D=3D ":") {=0A=
                        verifyTitle =3D =
verifyTitle.substr(wgCanonicalNamespace.length + 1);=0A=
                    } else {=0A=
                        realTitleText =3D =
wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleText;=0A=
                        realTitleHTML =3D =
wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleHTML;=0A=
                    }=0A=
                }=0A=
 =0A=
                // verify whether wgTitle matches=0A=
                verifyTitle =3D verifyTitle.replace(/[\s_]+/g, " ");     =
 // underscores and multiple spaces to single spaces=0A=
                verifyTitle =3D verifyTitle.replace(/^\s+/, =
"").replace(/\s+$/, "");        // trim left and right spaces=0A=
                verifyTitle =3D verifyTitle.charAt(0).toUpperCase() + =
verifyTitle.substring(1, verifyTitle.length);    // uppercase first =
character=0A=
                if ( (verifyTitle =3D=3D wgTitle) || (verifyTitle =3D=3D =
wgTitle.replace(/^(.+)?(January|February|March|April|May|June|July|August=
|September|October|November|December)\s+([12]?[0-9]|3[0123])([^\d].*)?$/g=
, "$1$3 $2$4") )) isPasteable =3D 1;=0A=
                var h1 =3D document.getElementsByTagName("h1")[0];=0A=
                if (h1 && isPasteable) {=0A=
                    h1.innerHTML =3D containsTooMuchHTML ? realTitleText =
: realTitleHTML;=0A=
                    if (!containsTooMuchHTML)=0A=
                        realTitleBanner.style.display =3D "none";=0A=
                }=0A=
                document.title =3D realTitleText + " - Wikipedia, the =
free encyclopedia";=0A=
            }=0A=
        }=0A=
    } catch (e) {=0A=
        /* Something went wrong. */=0A=
    }=0A=
  });=0A=
 }=0A=
 =0A=
 // similar to innerHTML, but only returns the text portions of the =
insides, excludes HTML=0A=
 function pickUpText(aParentElement) {=0A=
 var str =3D "";=0A=
 =0A=
 function pickUpTextInternal(aElement) {=0A=
  var child =3D aElement.firstChild;=0A=
  while (child) {=0A=
   if (child.nodeType =3D=3D 1)     // ELEMENT_NODE =0A=
    pickUpTextInternal(child);=0A=
   else if (child.nodeType =3D=3D 3)   // TEXT_NODE=0A=
    str +=3D child.nodeValue;=0A=
 =0A=
   child =3D child.nextSibling;=0A=
  }=0A=
 }=0A=
 =0A=
  pickUpTextInternal(aParentElement);=0A=
  return str;=0A=
 }=0A=
 =0A=
 //fix edit summary prompt for undo=0A=
 //this code fixes the fact that the undo function combined with the "no =
edit summary prompter" causes problems if leaving the=0A=
 //edit summary unchanged=0A=
 //this was added by [[User:Deskana]], code by [[User:Tra]]=0A=
 addOnloadHook(function () {=0A=
   if (document.location.search.indexOf("undo=3D") !=3D -1=0A=
   && document.getElementsByName('wpAutoSummary')[0]) {=0A=
     document.getElementsByName('wpAutoSummary')[0].value=3D'1';=0A=
   }=0A=
 })=0A=
=0A=
 /** Add dismiss button to watchlist-message =
*************************************=0A=
  *=0A=
  *  Description: Hide the watchlist message for one week.=0A=
  *  Maintainers: [[User:Ruud Koot|Ruud Koot]]=0A=
  */=0A=
 =0A=
 function addDismissButton() {=0A=
    var watchlistMessage =3D =
document.getElementById("watchlist-message");=0A=
    if ( watchlistMessage =3D=3D null ) return;=0A=
    var watchlistCookieID =3D =
watchlistMessage.className.replace(/cookie\-ID\_/ig,'');=0A=
 =0A=
    if ( document.cookie.indexOf( "hidewatchlistmessage-" + =
watchlistCookieID + "=3Dyes" ) !=3D -1 ) {=0A=
        watchlistMessage.style.display =3D "none";=0A=
    }=0A=
 =0A=
    var Button     =3D document.createElement( "span" );=0A=
    var ButtonLink =3D document.createElement( "a" );=0A=
    var ButtonText =3D document.createTextNode( "dismiss" );=0A=
 =0A=
    ButtonLink.setAttribute( "id", "dismissButton" );=0A=
    ButtonLink.setAttribute( "href", =
"javascript:dismissWatchlistMessage();" );=0A=
    ButtonLink.setAttribute( "title", "Hide this message for one week" );=0A=
    ButtonLink.appendChild( ButtonText );=0A=
 =0A=
    Button.appendChild( document.createTextNode( "[" ) );=0A=
    Button.appendChild( ButtonLink );=0A=
    Button.appendChild( document.createTextNode( "]" ) );=0A=
 =0A=
    watchlistMessage.appendChild( Button );=0A=
 }=0A=
 =0A=
 function dismissWatchlistMessage() {=0A=
    var e =3D new Date();=0A=
    e.setTime( e.getTime() + (7*24*60*60*1000) );=0A=
    var watchlistMessage =3D =
document.getElementById("watchlist-message");=0A=
    var watchlistCookieID =3D =
watchlistMessage.className.replace(/cookie\-ID\_/ig,'');=0A=
    document.cookie =3D "hidewatchlistmessage-" + watchlistCookieID + =
"=3Dyes; expires=3D" + e.toGMTString() + "; path=3D/";=0A=
    watchlistMessage.style.display =3D "none";=0A=
 }=0A=
 =0A=
 addOnloadHook( addDismissButton );=0A=
=0A=
 /** Main Page deletion image =
*******************************************************=0A=
   *=0A=
   *  Description: If the Main Page does not exist (i.e., it's been =
deleted) then insert an image=0A=
   *               instead of showing the "page does not exist" text.=0A=
   *  Created by: [[User:Mark]], with invaluable help from =
[[User:Pathoschild]]=0A=
   */=0A=
 =0A=
 function MainPageDeletedImage() {=0A=
   try {=0A=
 =0A=
     //If the article does not exist and it is the Main Page, proceed=0A=
     if ( document.getElementById( "noarticletext" ) && wgTitle =3D=3D =
'Main Page' ) {=0A=
 =0A=
       // Insert a protected commons image at the end of the document =
explaining it.=0A=
       var contentbox =3D document.getElementById('content');=0A=
       var newimg =3D document.createElement('img');=0A=
       =
newimg.setAttribute('src','http://upload.wikimedia.org/wikipedia/commons/=
9/99/WikipediaTechnical.png');=0A=
       contentbox.appendChild(newimg);=0A=
 =0A=
       // Hide the article-does-not-exist text=0A=
       var NoArticleMessage =3D document.getElementById('noarticletext');=0A=
       NoArticleMessage.style.display=3D"none";=0A=
 =0A=
       // Hide the edit button=0A=
       var EditThisPageButton =3D document.getElementById('ca-edit');=0A=
       EditThisPageButton.style.display=3D"none";=0A=
     }=0A=
   } catch(e) {=0A=
       // In case it does not work, do nothing=0A=
       return;=0A=
   }=0A=
 }=0A=
 =0A=
 addOnloadHook( MainPageDeletedImage );=0A=
=0A=
 /** Change Special:Search to use a drop-down menu =
*******************************************************=0A=
   *=0A=
   *  Description: Change Special:Search to use a drop-down menu, with =
the default being=0A=
   *               the internal MediaWiki engine=0A=
   *  Created and maintained by: [[User:Gracenotes]]=0A=
   */=0A=
 =0A=
 if (wgPageName =3D=3D "Special:Search") {=0A=
         var searchEngines =3D [];=0A=
         addOnloadHook(SpecialSearchEnhanced);=0A=
 }=0A=
 =0A=
 function SpecialSearchEnhanced() {=0A=
         var createOption =3D function(site, action, mainQ, addQ, addV) {=0A=
                 var opt =3D document.createElement('option');=0A=
                 opt.appendChild(document.createTextNode(site));=0A=
                 searchEngines[searchEngines.length] =3D [action, mainQ, =
addQ, addV];=0A=
                 return opt;=0A=
         }=0A=
 	=0A=
         if (document.forms['powersearch'])=0A=
         var searchForm =3D document.forms['powersearch'];=0A=
         if (document.forms['search'])=0A=
         var searchForm =3D document.forms['search'];=0A=
=0A=
         if (searchForm.lsearchbox) {=0A=
             var searchBox =3D searchForm.lsearchbox;=0A=
         } else {=0A=
             var searchBox =3D searchForm.search;=0A=
         }=0A=
         var selectBox =3D document.createElement('select');=0A=
         selectBox.id =3D 'searchEngine';=0A=
         searchForm.onsubmit =3D function() {=0A=
                 var optSelected =3D =
searchEngines[document.getElementById('searchEngine').selectedIndex];=0A=
                 searchForm.action =3D optSelected[0];=0A=
	             searchBox.name =3D optSelected[1];=0A=
                 searchForm.title.value =3D optSelected[3];=0A=
                 searchForm.title.name =3D optSelected[2];=0A=
         }=0A=
         selectBox.appendChild(createOption('MediaWiki search', =
wgScriptPath + '/index.php', 'search', 'title', 'Special:Search'));=0A=
         selectBox.appendChild(createOption('Google', =
'http://www.google.com/search', 'q', 'sitesearch', 'en.wikipedia.org'));=0A=
         selectBox.appendChild(createOption('Yahoo', =
'http://search.yahoo.com/search', 'p', 'vs', 'en.wikipedia.org'));=0A=
         selectBox.appendChild(createOption('Windows Live', =
'http://search.live.com/results.aspx', 'q', 'q1', =
'site:http://en.wikipedia.org'));=0A=
         selectBox.appendChild(createOption('Wikiwix', =
'http://www.wikiwix.com/', 'action', 'lang', 'en'));=0A=
         selectBox.appendChild(createOption('Exalead', =
'http://www.exalead.com/wikipedia/results', 'q', 'language', 'en'));=0A=
         searchBox.style.marginLeft =3D '0px';=0A=
         if (document.getElementById('loadStatus')) {=0A=
             var lStat =3D document.getElementById('loadStatus');=0A=
         } else {=0A=
             var lStat =3D searchForm.fulltext;=0A=
         }=0A=
         lStat.parentNode.insertBefore(selectBox, lStat);=0A=
 }=0A=
=0A=
 /** Geo-targeted watchlist notice =
*******************************************************=0A=
   *=0A=
   *  Description: Allows for geographic targeting of watchlist notices. =
See [[Wikipedia:Geonotice]] for more information.=0A=
   *  Created by: [[User:Gmaxwell]]=0A=
   */=0A=
 =0A=
 if (wgPageName =3D=3D "Special:Watchlist")=0A=
     addOnloadHook((function (){document.write('<script =
type=3D"text/javascript" =
src=3D"http://tools.wikimedia.de/~gmaxwell/cgi-bin/geonotice.py"><\/scrip=
t>')}));=0A=
=0A=
/** Sysop Javascript =
*******************************************************=0A=
 *=0A=
 *  Description: Allows for sysop-specific Javascript at =
[[MediaWiki:Sysop.js]].=0A=
 *  Created by: [[User:^demon]]=0A=
 */=0A=
function sysopFunctions() {=0A=
	if ( wgUserGroups && !window.disableSysopJS ) {=0A=
		for ( var g =3D 0; g < wgUserGroups.length; ++g ) {=0A=
			if ( wgUserGroups[g] =3D=3D "sysop" ) {=0A=
				importScript( "MediaWiki:Sysop.js" );=0A=
				break;=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
addOnloadHook( sysopFunctions );=0A=
=0A=
 /** WikiMiniAtlas =
*******************************************************=0A=
   *=0A=
   *  Description: WikiMiniAtlas is a popup click and drag world map.=0A=
   *               This script causes all of our coordinate links to =
display the WikiMiniAtlas popup button.=0A=
   *               The script itself is located on meta because it is =
used by many projects.=0A=
   *               See [[Meta:WikiMiniAtlas]] for more information. =0A=
   *  Created by: [[User:Dschwen]]=0A=
   */=0A=
=0A=
 function importWikiMiniAtlas() {=0A=
     var page =3D 'm:MediaWiki:Wikiminiatlas.js';=0A=
     if( importedScripts[page] ) {=0A=
         return;=0A=
     }=0A=
     importedScripts[page] =3D true;=0A=
     var url =3D =
'http://meta.wikimedia.org/w/index.php?title=3DMediaWiki:Wikiminiatlas.js=
' =0A=
     + =
'&action=3Draw&ctype=3Dtext/javascript&smaxage=3D21600&maxage=3D86400';=0A=
     var scriptElem =3D document.createElement( 'script' );=0A=
     scriptElem.setAttribute( 'src' , url );=0A=
     scriptElem.setAttribute( 'type' , 'text/javascript' );=0A=
     document.getElementsByTagName( 'head' )[0].appendChild( scriptElem =
);=0A=
 }=0A=
 importWikiMiniAtlas();=0A=
=0A=
/* document.write('<script type=3D"text/javascript" src=3D"' =0A=
     + =
'http://meta.wikimedia.org/w/index.php?title=3DMediaWiki:Wikiminiatlas.js=
' =0A=
     + =
'&action=3Draw&ctype=3Dtext/javascript&smaxage=3D21600&maxage=3D86400"></=
script>'); */=0A=
=0A=
 /** IE 6 Z-index bug workaround for anonnotice =
**************************=0A=
   *=0A=
   *  Description: This implements a work around for the Z-index bug =
found in Internet Explorer.=0A=
   *               It correctly places the anon notice on the page, even =
under IE6.=0A=
   *               See this Google search for more information about the =
bug:=0A=
   *               =
http://www.google.com/search?hl=3Den&client=3Dfirefox-a&rls=3Dorg.mozilla=
%3Aen-US%3Aofficial&hs=3Dq74&q=3Dz-index+ie6+bug&btnG=3DSearch=0A=
   *  Created by: [[User:Gmaxwell]]=0A=
   */=0A=
 addOnloadHook((function (){=0A=
     if (wgUserName =3D=3D null) {=0A=
       =0A=
         var messageEdu=3Dnew Array();=0A=
            messageEdu[0]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Researching_with_Wikipedia=
" title=3D"Wikipedia:Researching with =
Wikipedia">Learn&nbsp;more&nbsp;about&nbsp;using&nbsp;Wikipedia&nbsp;for&=
nbsp;research</a>';=0A=
            messageEdu[1]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Ten_things_you_may_not_kno=
w_about_Wikipedia" title=3D"Wikipedia:Ten things you may not know about =
Wikipedia">Ten&nbsp;things&nbsp;you&nbsp;may&nbsp;not&nbsp;know&nbsp;abou=
t&nbsp;Wikipedia</a>';=0A=
            messageEdu[2]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Ten_things_you_may_not_kno=
w_about_images_on_Wikipedia" title=3D"Wikipedia:Ten things you may not =
know about images on =
Wikipedia">Ten&nbsp;things&nbsp;you&nbsp;may&nbsp;not&nbsp;know&nbsp;abou=
t&nbsp;images&nbsp;on&nbsp;Wikipedia</a>';=0A=
            messageEdu[3]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia" =
title=3D"Wikipedia:Citing =
Wikipedia">Learn&nbsp;more&nbsp;about&nbsp;citing&nbsp;Wikipedia</a>';=0A=
            messageEdu[4]=3D'Have&nbsp;questions?&nbsp;<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Questions" =
title=3D"Wikipedia:Questions">Find&nbsp;out&nbsp;how&nbsp;to&nbsp;ask&nbs=
p;questions&nbsp;and&nbsp;get&nbsp;answers.</a>';=0A=
            messageEdu[5]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Basic_navigation" =
title=3D"Wikipedia:Basic =
navigation">Find&nbsp;out&nbsp;more&nbsp;about&nbsp;navigating&nbsp;Wikip=
edia&nbsp;and&nbsp;finding&nbsp;information</a>';=0A=
            messageEdu[6]=3D'<a =
href=3D"http://en.wikipedia.org/wiki/Wikipedia:Contributing_to_Wikipedia"=
 title=3D"Wikipedia:Contributing to =
Wikipedia">Interested&nbsp;in&nbsp;contributing&nbsp;to&nbsp;Wikipedia?</=
a>';=0A=
         var whichMessageEdu =3D =
Math.floor(Math.random()*(messageEdu.length));=0A=
=0A=
         =0A=
/**         document.getElementById("contentSub").innerHTML +=3D'<div =
style=3D"position:absolute; z-index:100; right:100px; top:0px;" =
class=3D"metadata" id=3D"anontip"><div style=3D"text-align:right; =
font-size:87%">=E2=80=A2&nbsp;<i>' + messageEdu[whichMessageEdu] + =
'</i>&nbsp;=E2=80=A2</div></div>';=0A=
 */=0A=
     }=0A=
 }));=0A=
=0A=
/** =0A=
  * Correctly handle PNG transparency in Internet Explorer 6.=0A=
  * http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.=0A=
  *  =0A=
  * Adapted for Wikipedia by Remember_the_dot and Edokter.=0A=
  *  =0A=
  * http://homepage.ntlworld.com/bobosola/pnginfo.htm states "This page =
contains more information for=0A=
  * the curious or those who wish to amend the script for special =
needs", which I take as permission to=0A=
  * modify or adapt this script freely. I release my changes into the =
public domain.=0A=
  */  =0A=
 =0A=
function PngFix()=0A=
{=0A=
    try=0A=
    {=0A=
        if (!document.body.filters)=0A=
        {=0A=
            window.PngFixDisabled =3D true=0A=
        }=0A=
    }=0A=
    catch (e)=0A=
    {=0A=
        window.PngFixDisabled =3D true=0A=
    }=0A=
    if (!window.PngFixDisabled)=0A=
    {=0A=
        var documentImages =3D document.images=0A=
        var documentCreateElement =3D document.createElement=0A=
        var funcEncodeURI =3D encodeURI=0A=
        =0A=
        for (var i =3D 0; i < documentImages.length;)=0A=
        {=0A=
            var img =3D documentImages[i]=0A=
            var imgSrc =3D img.src=0A=
            =0A=
            if (imgSrc.substr(imgSrc.length - 3).toLowerCase() =3D=3D =
"png" && !img.onclick)=0A=
            {=0A=
                if (img.useMap)=0A=
                {=0A=
                    img.style.filter =3D =
"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'" + =
encodeURI(imgSrc) + "')"=0A=
                    img.src =3D =
"http://upload.wikimedia.org/wikipedia/commons/c/ce/Transparent.gif"=0A=
                    i++=0A=
                }=0A=
                else=0A=
                {=0A=
                    var outerSpan =3D documentCreateElement("span")=0A=
                    var innerSpan =3D documentCreateElement("span")=0A=
                    var outerSpanStyle =3D outerSpan.style=0A=
                    var innerSpanStyle =3D innerSpan.style=0A=
                    var imgCurrentStyle =3D img.currentStyle=0A=
                    =0A=
                    outerSpan.id =3D img.id=0A=
                    outerSpan.className =3D img.className=0A=
                    outerSpanStyle.backgroundImage =3D =
imgCurrentStyle.backgroundImage=0A=
                    outerSpanStyle.borderWidth =3D =
imgCurrentStyle.borderWidth=0A=
                    outerSpanStyle.borderStyle =3D =
imgCurrentStyle.borderStyle=0A=
                    outerSpanStyle.borderColor =3D =
imgCurrentStyle.borderColor=0A=
                    outerSpanStyle.display =3D "inline-block"=0A=
                    outerSpanStyle.fontSize =3D "0"=0A=
                    outerSpanStyle.verticalAlign =3D "middle"=0A=
                    if (img.parentElement.href) outerSpanStyle.cursor =
=3D "hand"=0A=
                    =0A=
                    innerSpanStyle.width =3D "1px"=0A=
                    innerSpanStyle.height =3D "1px"=0A=
                    innerSpanStyle.display =3D "inline-block"=0A=
                    innerSpanStyle.filter =3D =
"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=3D'" + =
funcEncodeURI(imgSrc) + "')"=0A=
                    =0A=
                    outerSpan.appendChild(innerSpan)=0A=
                    img.parentNode.replaceChild(outerSpan, img)=0A=
                }=0A=
            }=0A=
            else=0A=
            {=0A=
                i++=0A=
            }=0A=
        }=0A=
    }=0A=
}=0A=
 =0A=
if (navigator.appName =3D=3D "Microsoft Internet Explorer" && =
navigator.appVersion.substr(22, 1) =3D=3D "6")=0A=
{=0A=
    window.attachEvent("onload", PngFix)=0A=
}=0A=
=0A=
/**=0A=
  * Remove need for CSS hacks regarding MSIE and IPA.=0A=
  */=0A=
=0A=
if(navigator.userAgent.indexOf("MSIE") !=3D -1 && =
document.createStyleSheet) {=0A=
   document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos =
SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit =
Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi =
Unicode";');=0A=
}=0A=
=0A=
//Fix "Upload file" link when using the secure proxy=0A=
//This is a workaround that can be removed when bug 10843 is fixed=0A=
addOnloadHook(function()=0A=
{=0A=
    if (document.getElementById("t-upload"))=0A=
    {=0A=
        =
document.getElementById("t-upload").getElementsByTagName("a")[0].href =
=3D wgArticlePath.replace("$1", "Wikipedia:Upload")=0A=
    }=0A=
})=0A=
=0A=
/* Disable code in table sorting routine to set classes on even/odd rows =
[[User:Random832]] */=0A=
ts_alternate_row_colors =3D false;=0A=
=0A=
/* MediaWiki:Monobook.js (deprecated; migrate to Common.js!) */=0A=
/* Deprecated by [[MediaWiki:Common.js]] */
------=_NextPart_000_0099_01C8ADDC.29728300--
